Java ORA-01704:oracle 10g中的字符串文字太长

Java ORA-01704:oracle 10g中的字符串文字太长,java,oracle,Java,Oracle,当字段RAWDATA超过4000个字符时,我收到ORA-01704:string literal太长错误。数据类型为CLOB。我正在使用Java1.4和Oracle10g stmt = conn.prepareStatement("INSERT INTO RAWDATA_EQUIFAX (REQ_ID, BUREAU_CODE, RAWDATA, RESP_TIME) VALUES (?, ?, ?, ?)"); stmt.setInt(1, RequestID); stmt.setStrin

当字段RAWDATA超过4000个字符时,我收到
ORA-01704:string literal太长
错误。数据类型为CLOB。我正在使用Java1.4和Oracle10g

stmt = conn.prepareStatement("INSERT INTO RAWDATA_EQUIFAX (REQ_ID, BUREAU_CODE, RAWDATA, RESP_TIME) VALUES (?, ?, ?, ?)");

stmt.setInt(1, RequestID);
stmt.setString(2, bureau_code);
stmt.setString(3, rawData);
stmt.setTimestamp(4, new Timestamp(date.getTime()));
stmt.executeUpdate();
conn.commit();
不要使用设置
Clob


有一种方法可以替代。

我认为应该使用此方法将Clob参数设置为PreparedStatement:

Clob clob = conn.createClob();
clob.setString(1, rawData);
stmt.setClob(3, clob);
clob.free();

这是预期的:VARCHAR2列的最大长度为4000,在查询中使用文本也是如此。使用CLOB参数。在oracle中使用它的CLOB,仍然会得到错误。有一个Java/oracle CLOB示例。我刚刚将它设置为stmt.setClob(3,rawData);我得到了一个错误:type PreparedStatement中的方法setClob(int,Clob)不适用于参数(int,String)。还有其他
setClob()
方法。您是否尝试过
setClob(3,新的StringReader(rawData))