oracle BLOB的insert和update 终极解决方案

来源:互联网 发布:哪里有seo黑帽教程 编辑:程序博客网 时间:2024/06/15 09:57
以下就对HTML_INFO表的blob类型的detail操作
 
一:insert操作:
QueryRunner qr = new QueryRunner(OracleUtil.oraDs);
conn.setAutoCommit(false); //切记要把AutoCommit设置为FALSE
第一步:insert into html_info values(HTMLINFO_ID.NEXTVAL,?,''old'',empty_blob());
第二步:把detail取出来
String sqlPgList =“select detail from html_info where oldid=? FOR UPDATE ”
BLOB detailBLOG=(BLOB)qr1.query(conn2, sqlPgList, params1, new BlobResultSetHandler());
OutputStream outOS = detailBLOG.getBinaryOutputStream(); 
outOS.write(要插入的数据.toString().getBytes("GBK"));//设置字符集,是原来要插入的数据的字符集。
outOS.close();
第三步:update这个字段:update html_info set detail=?
 
二:update操作:
QueryRunner qr = new QueryRunner(OracleUtil.oraDs);
conn.setAutoCommit(false); //切记要把AutoCommit设置为FALSE
第一步:UPDATE html_info SET detail=EMPTY_BLOB() WHERE oldid=?//这个SQL有时候需要执行,有时候不需要执行,大家最后是加上。个人建议。。
第二步:select detail from html_info where oldid=? FOR UPDATE"
BLOB detailBLOG=(BLOB)qr2.query(conn2, sqlPgList, params1, new BlobResultSetHandler());
OutputStream outOS = detailBLOG.getBinaryOutputStream(); 
outOS.write(detail[0].toString().getBytes("GBK"));//设置字符集,是原来要插入的数据的字符集。
outOS.close();
第三步:update html_info set detail=? where oldid=? 
0 0