jdbc基础 (三) 大文本、二进制数据处理
来源:互联网 发布:氟硝西泮片淘宝店 编辑:程序博客网 时间:2024/05/01 09:49
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据
CLOB:用于存储大文本
BLOB:用于存储二进制数据,例如图像、声音、二进制文件
在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT
TEXT 分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
BLOB 分为:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
取值范围如下图:
下面来看具体的代码实现:
package com.cream.ice.jdbc;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.Reader;import java.io.Writer;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.junit.Test;/** * 大文本数据操作 * * 假设数据库中已存在表test: * create table test( * id int primary key, * content longtext * ); * * @author ice * */public class ClobDemo { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet=null; @Test public void add(){ try { connection=JdbcUtils.getConnection(); statement=connection.prepareStatement("insert into test (id,content) values (?,?)"); statement.setInt(1, 1); //大文本要使用流的形式。将d:/test.txt内容添加至该记录的content字段 File file = new File("d:/test.txt"); Reader reader = new FileReader(file); //不能使用long的参数,因为mysql根本支持不到那么大的数据,所以没有实现 statement.setCharacterStream(2, reader, (int)file.length()); int i = statement.executeUpdate(); if(i>0) System.out.println("插入成功"); } catch (SQLException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } finally{ JdbcUtils.releaseResources(null, statement, connection); } } @Test public void read(){ try { connection = JdbcUtils.getConnection(); statement = connection.prepareStatement("select * from test where id=?"); statement.setInt(1, 1); //将读取内容保存到E盘上 resultSet = statement.executeQuery(); while(resultSet.next()){ Reader reader = resultSet.getCharacterStream("content"); Writer writer = new FileWriter("e:/test.txt"); char buffer[] = new char[1024]; int len = -1; while((len=reader.read(buffer))!=-1){ writer.write(buffer, 0, len); } reader.close(); writer.close(); } } catch (Exception e) { e.printStackTrace(); } finally{ JdbcUtils.releaseResources(resultSet, statement, connection); } }}
package com.cream.ice.jdbc;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import org.junit.Test;/** * 大二进制数据操作 * * 假设数据库中已存在表test: * create table test( * id int primary key, * content longblob * ); * * @author ice * */public class BlobDemo { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet=null; @Test public void add(){ try { connection=JdbcUtils.getConnection(); statement=connection.prepareStatement("insert into test (id,content) values (?,?)"); statement.setInt(1, 1); InputStream in = new FileInputStream("d:/test.jpg"); statement.setBinaryStream(2, in, in.available()); int i = statement.executeUpdate(); if(i>0) System.out.println("插入成功"); } catch (Exception e) { e.printStackTrace(); } finally{ JdbcUtils.releaseResources(null, statement, connection); } } @Test public void read(){ try { connection = JdbcUtils.getConnection(); statement = connection.prepareStatement("select * from test where id=?"); statement.setInt(1, 1); //保存到E盘上 resultSet = statement.executeQuery(); while(resultSet.next()){ InputStream in = resultSet.getBinaryStream("content"); OutputStream out = new FileOutputStream("e:/test.jpg"); byte b[] = new byte[1024]; int len = -1; while((len=in.read(b))!=-1){ out.write(b, 0, len); } out.close(); in.close(); } } catch (Exception e) { e.printStackTrace(); } finally{ JdbcUtils.releaseResources(resultSet, statement, connection); } }}
鄙人博客园原博地址:jdbc基础 (三) 大文本、二进制数据处理
1 0
- jdbc基础 (三) 大文本、二进制数据处理
- JDBC大文本数据处理浅谈
- Jdbc中的大文本和二进制处理
- 使用JDBC处理大数据(大文本/二进制数据)
- jdbc大数据处理
- JDBC 大二进制存取
- JDBC处理大数据、大文本、二进制数据、批处理相关知识
- 传智播客 JDBC基础之日期问题与大文本操作
- jdbc大文本处理
- JDBC处理大文本数据或二进制数据和批量处理
- 【JDBC】——【大文本、二进制、批处理、获取自动生成主键、事务、事务的隔离级别】
- 大文本和二进制操作
- JDBC基础(三)
- JDBC基础(三)
- JDBC基础(三)
- JDBC基础(三)
- 用Apache Spark进行大数据处理三
- 大数据处理之荷兰三剑客
- iOS uiwebview向.net后端发起请求无效的问题
- docker资源汇总
- Python Dict -> Object
- 微信第三方网站登录
- MySQL 5.6在Windows下免安装版配置
- jdbc基础 (三) 大文本、二进制数据处理
- springmvc 配置
- hdu4059---The Boss on Mars(容斥原理+前n项的4次方和)
- JAVA操作properties文件
- 使用Gradle打Android渠道包
- Stanford机器学习---第一讲. Linear Regression with one variable
- Hello Java!
- 遇见C++ Lambda
- 用angularjs 模块时Error: [ng:areq] Argument 'controller' is not a function,