当前位置: 技术问答>java相关
可以将String转化为Blob类型么?在线给分
来源: 互联网 发布时间:2015-11-18
本文导语: 可以将String转化为Blob类型么? | 添加或更新clob型数据,如下所示(以更新为例): PreparedStatement pstmt=conn.prepareStatement(“update tablename set column1=? “+条件语句); byte[] bytes_zyjs = longSt...
可以将String转化为Blob类型么?
|
添加或更新clob型数据,如下所示(以更新为例):
PreparedStatement pstmt=conn.prepareStatement(“update tablename set column1=? “+条件语句);
byte[] bytes_zyjs = longStr.getBytes();
ByteArrayInputStream baisss = new ByteArrayInputStream(bytes_zyjs);
InputStreamReader bais = new InputStreamReader(baisss);
pstmt.setCharacterStream(1,bais,bytes_zyjs.length);
pstmt.executeUpdate();
读取数据可以直接使用ResultSet的getString()方法。
PreparedStatement pstmt=conn.prepareStatement(“update tablename set column1=? “+条件语句);
byte[] bytes_zyjs = longStr.getBytes();
ByteArrayInputStream baisss = new ByteArrayInputStream(bytes_zyjs);
InputStreamReader bais = new InputStreamReader(baisss);
pstmt.setCharacterStream(1,bais,bytes_zyjs.length);
pstmt.executeUpdate();
读取数据可以直接使用ResultSet的getString()方法。
|
1)blob类型的数据不能直接insert,要先通过empty_blob()方法给它分配一个locator.然后把它select出来(此时它当然没有数据,但结果集不是空的),得到一个Blob的对象,修改该对象的内容让它满足我们的需要,再通过update方法更新该行记录.
2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.
3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了. 这就是上面那段代码里//*两行的作用.
2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.
3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了. 这就是上面那段代码里//*两行的作用.