我有一个包含clob数据类型列的表。从我的java方法,我试图使用update语句更新行的clob列。查询正在执行而没有任何错误,但clob未更新。 相同的代码适用于insert语句。
用于更新clob列的Java代码:
w_Sql="UPDATE MYTABLE SET MYCLOB= ? WHERE CHANGEREQD = ?";
_pstmt = openConnection().prepareStatement(w_Sql);
Reader reader = new StringReader(clobStr);
_pstmt.setCharacterStream(1, reader, clobStr.length());
用于插入clob列的Java代码:
w_Sql="INSERT INTO MYTABLE VALUES(?,?,?,?,?,?,?,'',?)";
_pstmt = openConnection().prepareStatement(w_Sql);
Reader reader = new StringReader(clobStr);
_pstmt.setCharacterStream(1, reader, clobStr.length());
请帮我理解这个问题。
答案 0 :(得分:1)
在解决类似于OP问题的情况时,回答其他人利用的问题。
setString()
可能会替代setCharacterStream()
或者作为替代方案,您可能会选择Oracle documentation完全建议的解决方案!
来自Oracle文档:
Clob myClob = [CONNECTION OBJECT].createClob();
myClob.setString(1, [actual string value]);
_pstmt.setClob(1, myClob);
这两种方法都应该有效,并且应该能够让您更新表中的CLOB列。