最近一個新項目中,嘗試在 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讀寫問題(經驗分享)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。