插入BLOB¶
创建完Blob对象,如何将这个Blob对象插入到表中去呢?比如存在表TEST_BLOB,它有两个字段,第一个为ID(INT),第二个为FILE(BLOB),括号内为该字段的数据类型。我们可以有两种方法可以使用。
方法一:
/*
* 先将创建的Connection对象con转化为OscarJdbc2Connection类型,
* 然后调用OscarJdbc2Connection中的createBlob()方法
*/
Blob blob = ( (OscarJdbc2Connection) con).createBlob();
/*插入数据方法一*/
sql = " INSERT INTO TEST_BLOB VALUES(?,?)";
//创建PreparedStatement对象用来插入数据
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(1,1);
pstmt.setBlob(2,blob);
//执行,插入到表中
pstmt.execute();
//然后可以操作Blob对象往里面插入数据,bytes是一个byte数组
byte[] bytes = new byte[200];
String strInput="abcdefg";
bytes= strInput.getBytes();
blob.setBytes(1,bytes);
方法二:
/*插入数据方法二*/
//empty_blob()将在插入的记录中放入一个空的大对象
sql ="INSERT INTO TEST_BLOB VALUES(2,EMPTY_BLOB())";
//插入一条记录,stmt是已经创建了的Statement对象
stmt.executeUpdate(sql);
//然后可以将那个Blob大对象取出来,往里面插入数据
sql = "SELECT * FROM TEST_BLOB WHERE ID = 2";
ResultSet rs = stmt.executeQuery(sql);
//取得Blob对象blob,接着就可以处理里面的数据了
while(rs.next()){
blob = rs.getBlob("FILE");
blob.setBytes(1,bytes);
}