首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 操作 Oracle CLOB 大物件完整教學:插入、查詢與 PL/SQL 驗證範例

     編輯:Java 相關知識

示範使用 PreparedStatement 操作 Oracle CLOB 欄位,包含插入空 CLOB 後寫入字串、查詢讀取子字串、以及使用 DBMS_LOB.getlength 驗證資料長度。

資料表結構

clobtest_table (
  id VARCHAR2(10),
  picstr CLOB
)

1. 插入 CLOB 資料

conn.setAutoCommit(false);
// 先插入空 CLOB
String sql = "insert into clobtest_table(id, picstr) values(?, empty_clob())";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "001");
pstmt.executeUpdate();

// 查詢回該筆 CLOB 定位器
pstmt = conn.prepareStatement("select picstr from clobtest_table where id = '001' for update");
ResultSet rs = pstmt.executeQuery();
oracle.sql.CLOB clob = null;
if (rs.next()) clob = (oracle.sql.CLOB) rs.getClob(1);

// 寫入字串內容
Writer wr = clob.getCharacterOutputStream();
wr.write(strContent);
wr.flush();
wr.close();
rs.close();
conn.commit();

2. PL/SQL 驗證長度

SQL> select dbms_lob.getlength(picstr) from clobtest_table;

3. 讀取 CLOB 資料

String sql = "select picstr from clobtest_table where id = '001'";
pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
  oracle.sql.CLOB clob = (oracle.sql.CLOB) ((oracle.jdbc.driver.OracleResultSet)rs).getClob(1);
  if (clob == null || clob.length() == 0) {
    System.out.println("CLOB 為空");
  } else {
    String content = clob.getSubString(1, (int)clob.length());
    System.out.println(content);
  }
}

關鍵點總結

  • 必須先 empty_clob() 插入空定位器,再 for update 查詢取得可寫入的 CLOB 物件。
  • 使用 getCharacterOutputStream() 寫入字元資料,getSubString() 讀取。
  • Oracle JDBC 需轉型為 oracle.sql.CLOB 或 OracleResultSet 存取專有 API。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved