JDBC中 往Clob字段插入数据的问题,高手请进! ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");这个 for update 是什么意思? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我做的是BLOB的,供参考:... boolean blnTemp=conn.getAutoCommit(); conn.setAutoCommit(false) ; stmt=conn.createStatement() ; ResultSet rs=stmt.executeQuery(strSQL) ; if(rs.next()){ Blob blob=rs.getBlob(1) ; OutputStream os=((oracle.sql.BLOB)blob).getBinaryOutputStream() ; os.write(myBytes) ; os.flush() ; stmt.execute("commit") ; os.close(); rs.close(); } stmt.close(); conn.setAutoCommit(blnTemp) ;... 从程序上看,应该也是没有问题。我前段也写过这个和你的稍有不同。给你参考参考: weblogic.jdbc.rmi.SerialOracleClob clobtt=null; clobtt=(weblogic.jdbc.rmi.SerialOracleClob)rs.getClob(1); Writer wt=clobtt.getCharacterOutputStream(); BufferedReader in = new BufferedReader(new FileReader(infile)); int c; while ((c=in.read())!=-1) { wt.write(c); } wt.flush(); wt.close(); 谢谢各位 我的程序刚开始执行时是正确的,另外插入时,对于id字段取另外的数字也可以正确插入,但是当我把原来的记录行删除之后,id字段还取原来的数字,重新执行插入就不行了。真是困惑 另外在sql*plus 里边 含clob 的记录行怎样让它的内容全都显示出来啊 是不是删除记录后没有commit?所以存在相同ID字段值时出错? 果然是这样! 谢谢saintKnight !!! 只剩后面一个问题了,一条记录的clob 字段含有很多行,但在sql*plus 里边只显示前面的两三行,是怎么回事?谢谢大家 再re一下, 现在的问题是:一条记录的clob 字段含有很多行,但在sql*plus 里边只显示前面的两三行,怎样让它全部显示出来? 我想结贴了,谁知道的回一下吧 求助 Java char类型 求一个动态绑定问题 难,关于MD5加密中文不一致问题 Java语言在处理回车键时真的有问题吗? 怎样修改权限使applet能读写本地文件 JDK和内存的冲突? 请问:如何实现通过点击不同的button改变下面不同面板的切换? 为什么总有人骂Microsoft的东西烂 注册码疑问?求JPadPro 4.1 Build 537 java是不是没有普通函数? 数据库查询中的类型辨别问题 菜鸟的问题!
...
boolean blnTemp=conn.getAutoCommit();
conn.setAutoCommit(false) ;
stmt=conn.createStatement() ;
ResultSet rs=stmt.executeQuery(strSQL) ;
if(rs.next()){
Blob blob=rs.getBlob(1) ;
OutputStream os=((oracle.sql.BLOB)blob).getBinaryOutputStream() ;
os.write(myBytes) ;
os.flush() ;
stmt.execute("commit") ;
os.close();
rs.close();
}
stmt.close();
conn.setAutoCommit(blnTemp) ;
...
我前段也写过这个和你的稍有不同。给你参考参考:
weblogic.jdbc.rmi.SerialOracleClob clobtt=null;
clobtt=(weblogic.jdbc.rmi.SerialOracleClob)rs.getClob(1);
Writer wt=clobtt.getCharacterOutputStream();
BufferedReader in = new BufferedReader(new FileReader(infile)); int c;
while ((c=in.read())!=-1) {
wt.write(c);
}
wt.flush();
wt.close();
我的程序刚开始执行时是正确的,另外插入时,对于id字段取另外的数字也可以正确插入
,但是当我把原来的记录行删除之后,id字段还取原来的数字,重新执行插入就不行了。真是困惑
另外在sql*plus 里边 含clob 的记录行怎样让它的内容全都显示出来啊
只剩后面一个问题了,一条记录的clob 字段含有很多行,但在sql*plus 里边只显示前面的两三行,是怎么回事?谢谢大家
我想结贴了,谁知道的回一下吧