gpt4 book ai didi

java - setString 不支持PreparedStatement 中的国家字符(Oracle 12)

转载 作者:行者123 更新时间:2023-12-02 09:42:55 25 4
gpt4 key购买 nike

我们使用 Oracle 版本 12.1.0.2.0 以及 ojdbc7-1.0.jar 和 JDK 8。

我们使用 Hikari 作为连接池(如果它相关)并且它使用 oracle.jdbc.driver.OracleDriver

这是recommended driver在oracle中使用

Oracle Database version JDBC specification compliance

12.1 or 12cR1 ojdbc7.jar with JDK 7 and JDK 8

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

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

Sets the designated paramter to the given String object. The driver converts this to a SQL NCHAR or NVARCHAR or LONGNVARCHAR value (depending on the argument's size relative to the driver's limits on NVARCHAR values) when it sends it to the database.

我们可以在不更改代码的情况下使用 setString 添加对现有代码的支持(平台/配置级别)吗?

try (PreparedStatement ps = conn.prepareStatement(SQL_STATEMENT)) {
ps.setString(1, THAI_TEXT);
}

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

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

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

最佳答案

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

关于java - setString 不支持PreparedStatement 中的国家字符(Oracle 12),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com