setString在PreparedStatement(Oracle 12)中不支持国家字符

问题描述 投票:0回答:1

我们正在将Oracle版本12.1.0.2.0与ojdbc7-1.0.jar和JDK 8一起使用。

如果相关并且使用oracle.jdbc.driver.OracleDriver,我们将Hikari用作连接池

这是在Oracle中使用的recommended driver

Oracle数据库版本JDBC规范符合性

带有JDK 7和JDK 8的12.1或12cR1 ojdbc7.jar

在Spring应用程序中,我们正在使用PreparedStatement,并且我们希望支持使用国家字符作为字符。

我们使用setNString用于新的/更新的查询

将指定的参数设置为给定的String对象。驱动程序在将其发送到数据库时,将其转换为SQL NCHAR或NVARCHAR或LONGNVARCHAR值(取决于参数的大小,相对于驱动程序对NVARCHAR值的限制)。

我们是否可以使用setString在不更改代码的情况下为现有代码

添加支持(平台/配置级别?)>
try (PreparedStatement ps = conn.prepareStatement(SQL_STATEMENT)) {
        ps.setString(1, THAI_TEXT);
}

尽管列定义为setString,当前NVARCHAR2(50)不处理国家字符(另存为?)>

我们必须用setString替换所有setNString吗?

或者是否存在可以使用setString添加国家支持的标志/属性/升级/修复?

我们正在将Oracle版本12.1.0.2.0与ojdbc7-1.0.jar和JDK 8一起使用。如果相关,并且使用oracle.jdbc.driver.OracleDriver,我们将Hikari用作连接池,这是推荐的驱动程序...] >

您可能会不满意oracle.jdbc.defaultNChar=true,请参阅JDBC Guide中的19.2(但是我发现Oracle和JDBC API在这方面非常令人困惑,它应该与setString一起使用)

java spring internationalization prepared-statement oracle12c
1个回答
1
投票

您可能会不满意oracle.jdbc.defaultNChar=true,请参阅JDBC Guide中的19.2(但是我发现Oracle和JDBC API在这方面非常令人困惑,它应该与setString一起使用)

© www.soinside.com 2019 - 2024. All rights reserved.