最近一个新项目中,尝试在 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读写问题(经验分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

02-08 14:59