JavaEE JDBC 读写LOB大对象
2017-01-17 18:04
309 查看
JDBC 读写LOB大对象
@author ixenosLOB
除了数字、字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据,在SQL中,二进制(字节型)大对象称为BLOB,字符型大对象称为CLOB
读取LOB流程
i. 执行SELECT语句ii. ResultSet调用getBlob或getClob方法获取Blob或Clob类型的对象
iii. Blob调用getBytes或getInputStream方法获取Image等对象
iv. 代码如下:
PreparedStatement stat = conn.prepareStatement(“SELECT Cover FROM BookCovers WHERE ISBN=?”); stat.set(1, isbn); ResultSet result = stat.executeQuery(); If(result.next()){ //从ResultSet中获取Blob对象 Blob coverBlob = result.getBlob(1); //Blob对象打开字节流,获取数据 Image coverImage = ImageIO.read(coverBlob.getBinaryStream()); }
v. 同理,Clob调用getSubString或getCharacterStream来获取字符数据
存储LOB对象到数据库流程
i. 在Connection对象上调用createBlob或createClob得到空的Blob、Clobii. 从Blob、Clob获取该LOB的输出流或写出器
iii. 将数据通过输出流写出数据到LOB对象中
iv. 将该LOB对象存储到数据库中
v. 代码如下:
Blob coverBlob = conn.createBlob(); int offset = 0; OutputStream out = coverBlob.setBinaryStream(offset); //将Image对象coverImage的数据用二进制流输出到Blob对象中 ImageIO.write(coverImage, “PNG”, out); PreparedStatement stat = conn.prepareStatement(“INSERT INTO Cover VALUES (?,?)”); stat.set(1, isbn); //将Blob对象插入数据库中 stat.set(2, coverBlob); stat.executeUpdate();
注意
从数据库中读取一个LOB或数组(SQL数组指值的序列,在java中是java.sql.array)时,并不等于获取了它的实际内容,只有在访问具体的值时,它们才会从数据库中被读取出来,这对改善性能有好处,因为通常这些数据的数据量都非常大
相关文章推荐
- java中对象次第读写(Serialization)
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 ‘xxx’ 无效
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之12.Servlet基础(1)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之11.Servlet简介 推荐
- 用Java and JDBC-ODBC读写Excel文件
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之14.Servlet请求头信息
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之04.JDBC Resultset 推荐
- java里连接sqlserver对象名无效的解决方法 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 无效
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(1)
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'xxx' 无效
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之35.安装使用MySQL及SQL Manager 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之34.Tomcat安装与配置 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之05.JDBC MetaData
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03.JDBC Statement(1)
- 以优雅直观的方式调用JAVA对象方法和读写JAVA对象成员
- Java EE WEB工程师培训—JDBC+Servlet+JSP整合开发之32. HTML简介 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之01.JDBC简介 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之09.JDBC DAO设计模式
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(2)