讀寫Oracle 10g的CLOB欄位
今天有個將超長字串寫入Oracle資料庫的需求,原先以為只要把欄位型態定義CLOB (Character Large OBject)再用setString填入即可,沒想到當字串長度超過8K時就會產生SQLException,哇,難道真的要用stream的方法來處理嗎?有點麻煩哩。還好,終於找到解決方法,但似乎只能用在Oracle10g上:
- Oracle 10g針對CLOB 形態做了加強,能直接用getString和setString來讀寫CLOB欄位。
- 字串長度最大32,765 Bytes
- 必須使用Oracle 10g的JDBC driver (ojdbc14.jar)
- Varchar2最大只能設定到4000,因此有較長字串需處理時,可使用CLOB再限制長度為32765 (此長度應該對大部份應用都能適用)
- 要存取超過32,765字串時的特殊處理:
- 使用擴充的setStringForClob method:
opstmt = (OraclePreparedStatement)conn.prepareStatement(sql); // Use the new method to insert the CLOB data (for data greater or lesser than 32 KB) opstmt.setStringForClob(1,str); // Execute the OraclePreparedStatement opstmt.executeUpdate();
- 啟始Driver時設定參數
// Load the database details into the variables. String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "scott"; String password = "tiger"; // Create the properties object that holds all database details Properties props = new Properties(); props.put("user", user ); props.put("password", password); props.put("SetBigStringTryClob", "true"); // Load the Oracle JDBC driver class. DriverManager.registerDriver(new OracleDriver()); // Get the database connection Connection conn = DriverManager.getConnection( this.url, this.props );
- 使用擴充的setStringForClob method:
##
您可能也會有興趣的類似文章
- [DB] 給開發人員使用的Oracle SQL Developer (2則留言, 2007/07/28)
- 又一個Java寫的資料庫前端工具:Execute Query 3.0 (2則留言, 2006/09/21)
- 與Oracle資料庫相容的EnterpriseDB (1則留言, 2005/05/25)
- DBDesigner 4: Open source的資料庫建模工具 (2則留言, 2005/02/02)
- 資料庫工具Aqua Data Studio躍升至6.0版 (0則留言, 2006/12/08)
- Oracle驚魂夜 (0則留言, 2008/08/02)
- [Database] 建立SQL Server的檔案群組 (1則留言, 2005/03/23)
- [轉貼] 甲骨文欲收購開原碼MySQL (0則留言, 2006/02/16)
- InterBase原作者加入MySQL AB (0則留言, 2006/02/21)
- Open source的資料庫建模工具:Db Designer Fork (0則留言, 2007/05/16)
- [NetBeans] 在IDE裡執行資料庫連線與查詢 (0則留言, 2006/01/17)
- [Java] jTDS: SQL Server的JDBC驅動程式 (0則留言, 2005/03/03)
- 使用FireFox插件存取SQLite資料庫 (0則留言, 2008/01/23)
- 轉貼: SAP加碼Retek回敬甲骨文 (2則留言, 2005/03/18)
- Aqua Data Studio的新功能 (2則留言, 2005/12/28)
Sorry, 很久沒用Google sc…