当字段RAWDATA有超过4000个字符时,我收到ORA-01704: string literal too long
错误。数据类型是CLOB。我使用的是java 1.4和oracle 10g。
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();
答案 0 :(得分:3)
请勿使用PreparedStatement#setString()
设置Clob
您可以使用PreparedStatement#setClob()
方法。
答案 1 :(得分:0)
我认为您应该使用它来将Clob参数设置为PreparedStatement:
Clob clob = conn.createClob();
clob.setString(1, rawData);
stmt.setClob(3, clob);
clob.free();