我在Oracle 11.2.0.3数据库中加载了一个Java程序。我使用Oracle的Server-Side Internal Driver与主机数据库进行通信。
问题是,当我试图将数据插入clob列
时Clob clob = targetCon.createClob();
clob.setString(1, (String) value);
insertStm.setClob(col, clob);
我收到错误
Exception in thread "Root Thread" java.lang.NoSuchMethodError
如果我从独立程序(在数据库外部运行)调用它,相同的代码就可以工作。在两种情况下,驱动程序信息都显示Oracle JDBC driver version:11.2.0.3.0
。
我也尝试过以下代码
String s = (String) value;
StringReader stringReader = new StringReader(s);
insertStm.setCharacterStream(col, stringReader , s.length());
但是这给了我
java.sql.BatchUpdateException: ORA-01460: unimplemented or unreasonable conversion requested
My Oracle Support中的Doc ID 1484721.1指示使用setClob()...
为什么我的代码在作为独立程序运行时工作,但在使用内部驱动程序(具有相同版本)时抛出错误?
答案 0 :(得分:1)
问题似乎是通过将插入包装在PL / SQL块
中来解决的BEGIN
INSERT id, c INTO clob_tab VALUES(?,?);
END;
并使用setCharacterStream,但我仍然好奇为什么原始代码抛出NoSuchMethodError