我们正在构建一个由 Oracle 数据库支持的 Java 应用程序,我们使用 JDBC(驱动程序)访问该数据库ojdbc6.jar
and orai18n.jar
)。数据库模式主要使用以下方式存储文本列NVARCHAR2
数据类型。
The JDBC 文档 http://download.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getNString%28int%29对于 JDBCResultSet
说getNString()
特别适合与 NCHAR、NVARCHAR 等数据类型一起使用,但目前我们仅使用getString()
.
这似乎工作正常,所以我想知道为什么我应该使用getNString()
而不是getString()
. Is getString()
如果输入非 ASCII 字符就会开始失败,或者 Oracle JDBC 驱动程序对我应该使用哪种方法不感兴趣?
编辑:似乎它可能依赖于数据库:SQL Server 似乎并不介意你使用哪个 http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/8e0d9743-241e-4b09-b3a2-137238c02bf1,取决于连接参数。有谁有Oracle的具体信息吗?
我对我们的应用程序进行了测试,看来getNString()
对于 Java 6、JDBC 6、Oracle JDBC 6 驱动程序和 Oracle 11.1.0.6.0 是不必要的。我使用的测试字符串是“Δ、Й、ק、 м、๗、あ、叶、叶和 말”,复制自http://en.wikipedia.org/wiki/Unicode http://en.wikipedia.org/wiki/Unicode.
我们的大部分数据访问都是通过存储过程完成的。 Java 能够通过以下方式正确设置和检索上述测试字符串setObject()
and getString()
(not setString()
出于抽象原因),从接口收集数据并按预期将其写回接口。
Hence getString()
使用 Oracle 11g(如上面链接中的 SQL Server)可以正常处理 Unicode 数据,因此我们将继续使用它而不是getNString()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)