1. 程式人生 > 資料庫 >巧妙解決Oracle NClob讀寫問題(經驗分享)

巧妙解決Oracle NClob讀寫問題(經驗分享)

最近一個新專案中,嘗試在 Oracle 資料庫中使用 NCLOB 來儲存大的 xml 字串。

在程式碼自動生成工具(通過 JDBC 驅動程式,讀資料庫表結構,自動生成對應的 java 程式碼,包含增加、刪除、修改、分頁查詢、根據主鍵查詢等前臺 html/js、後臺程式碼 java),將 NCLOB 欄位對映到 String 型別。

執行程式碼,無報錯。使用 SQuirreL SQL 客戶端檢視資料,覺察資料未儲存成功。

網上搜一通,有提到用 SetBigStringTryClob 的資料庫連線額外屬性的。總覺得好傻。也有提到用 setStringForClob 方法的,也比較笨。

最後在 Oracle 官網上,找到一個更好的辦法:

升級 Oracle JDBC 驅動程式,直接用 java JDBC 標準的 setString 函式,儲存成功!

對應網址:

http://docs.oracle.com/cd/E11882_01/java.112/e16548/oralob.htm#JJDBC28534

裡面提到:

In Oracle Database 11g release 2 (11.2),the setBytes,setBinaryStream,setString,setCharacterStream,and setAsciiStream methods of PreparedStatement are extended to enhance the ability to work with

BLOB,CLOB,and NCLOB target columns.

...

The SetBigStringTryClob connection property of Oracle Database 10g Release 1 (10.1) is no longer used or needed.

...

----------------------------

以上這篇巧妙解決Oracle NClob讀寫問題(經驗分享)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。