java插入clob字段

http://blog.csdn.net/gaowenming/article/details/4964767

1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用empty_blob()函数分配locator).然后把它select出来(此时它当然没有数据,但结果集不是空的),得到一个Clob的对象,修改该对象的内容让它满足我们的需要,再通过update方法更新该行记录.2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错. 3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了!

下面是详细的实例:

[java] view plaincopy

    packagecom.data;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.Statement;importoracle.sql.CLOB;publicclassWriteClob{/***beckham2009-12-7下午09:47:36*/publicstaticvoidmain(String[]args)throwsException{Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();Stringurl="jdbc:oracle:thin:@localhost:1521:menhu";Stringuser="zm";Stringpassword="zm";Connectionconn=DriverManager.getConnection(url,user,password);//设置手动提交conn.setAutoCommit(false);Statementsta=null;ResultSetrs=null;PreparedStatementps=null;StringBuffersb=newStringBuffer();//clob字段的内容sb.append("aaa").append("/r/n").append("bbbb").append("/r/n").append("ccc");Stringsql="insertintotestvalues(2,empty_clob())";sta=conn.createStatement();sta.executeUpdate(sql);conn.commit();//锁定并编辑当前数据sql="selectcdatafromtestwhereid=2forupdate";rs=sta.executeQuery(sql);if(rs.next()){//获取clob对象,此处的clob是oracle.sql.ClobCLOBclob=(CLOB)rs.getClob(1);clob.putString(1,sb.toString());//执行更新操作sql="updatetestsetcdata=?whereid=2";ps=conn.prepareStatement(sql);//给clob字段赋值ps.setClob(1,clob);ps.executeQuery();}conn.commit();rs.close();ps.close();sta.close();conn.close();}}

如同磁铁吸引四周的铁粉,热情也能吸引周围的人,改变周围的情况。

java插入clob字段

相关文章:

你感兴趣的文章:

标签云: