CLOB 資料過長無法直接 INSERT,必須建立 oracle.sql.CLOB 物件,寫入內容後再以 PreparedStatement.setClob 綁定。
import oracle.sql.*; import oracle.jdbc.driver.*;
String sql = "INSERT INTO TEST(ID, CONTENT) VALUES ('0001', ?)";
conn.setAutoCommit(false);
CLOB clob = CLOB.createTemporary((OracleConnection)conn, true, CLOB.DURATION_SESSION);
clob.putString(1, formateSingleQuotes(content)); // 自行處理單引號轉義
OraclePreparedStatement pstmt = (OraclePreparedStatement)((OracleConnection)conn).prepareStatement(sql);
pstmt.setClob(1, clob);
int i = pstmt.executeUpdate();
pstmt.close();
((OracleConnection)conn).commit();
// 釋放資源...
String sql = "UPDATE TEST SET CONTENT = ? WHERE ID = '0001'"; // 其餘步驟同插入,僅 SQL 不同
createTemporary 建立 Session 級暫時 LOBputString 位移從 1 開始AutoCommit 並手動提交