Вот код сома, который я нашел, лежащий вокруг, который, я думаю, делает то, что вы хотите:
У меня есть такой статический метод:
public class DBUtil {
public static CLOB getCLOB(String innStr, Connection conn) throws SQLException,
IOException {
CLOB tempClob = null;
// If the temporary CLOB has not yet been created, create new
tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
// Open the temporary CLOB in readwrite mode to enable writing
tempClob.open(CLOB.MODE_READWRITE);
// Get the output stream to write
Writer tempClobWriter = tempClob.getCharacterOutputStream();
// Write the data into the temporary CLOB
tempClobWriter.write(innStr);
// Flush and close the stream
tempClobWriter.flush();
tempClobWriter.close();
// Close the temporary CLOB
tempClob.close();
return tempClob;
}
}
И тогда вы можете использовать его примерно так:
CLOB tempClob = DBUtil.getCLOB(longString, connection);
pstmt.setCLOB(colnumber, tempClob);
Для этого требуется, чтобы весь контент сгустка был в строке, поэтому он все загружен в память, возможно, не подходит для вас, но он работает для моих простых нужд.
РЕДАКТИРОВАТЬ: Вероятно, я должен отметить, что я использовал этот код с вызовом процедуры plsql. Я не проверял это напрямую с помощью sql