1、概述
JDBC 标准为了增强对大数据对象的操作,在 JDBC 3.0 标准中增加了 java.sql.Blob 和
java.sql.Clob 这两个接口。这两个接口定义了许多操作大对象的方法,通过这些方法就可以
对大对象的内容进行操作。
2. 产生 Lob 对象
在 ResultSet 和 CallableStatement 对象中调用 getBlob()和 getClob()方法就可以获得 Blob
对象和 Clob 对象:
Blob blob = rs.getBlob(1); Clob clob = rs.getClob(2);
3. 设置 Lob 对象
Lob 对象可以像普通数据类型一样作为参数来进行参数赋值,在操作 PreparedStatement、
CallableStatement、ResultSet 对象时使用:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO bio (image, text) " + "VALUES (?, ?)"); //authorImage is a Blob Object pstmt.setBlob(1, authorImage); //authorBio is a Clob Object pstmt.setClob(2, authorBio);
在一个可更新的结果集中,也可以利用 updateBlob(int,Blob)、updateBlob(String,Blob)和
updateClob(int,Clob)、updateClob(String,Clob)来更新当前行。
4. 改变 Lob 对象的内容
Lob 接口提供了方法让用户可以对 Lob 对象的内容进行任意修改:
byte[] val = {0,1,2,3,4}; Blob data = rs.getBlob("DATA"); int numWritten = data.setBytes(1, val); // 在指定的位置插入数据 PreparedStatement ps = conn.prepareStatement("UPDATE datatab SET data = ?"); ps.setBlob("DATA", data); ps.executeUpdate();
注意:
目前 LOB 内容的更新和其当前所处的事务之间没有直接的联系。更新 LOB 时,会
直接写入到数据库中,即便当前事务最终回滚也不能恢复。
https://xpanx.com/
评论