为 Oracle JDBC 瘦客户端设置语言

Posted

技术标签:

【中文标题】为 Oracle JDBC 瘦客户端设置语言【英文标题】:Set language for Oracle JDBC thin client 【发布时间】:2009-06-11 11:56:45 【问题描述】:

我想在实际创建 JDBC 连接之前为其指定语言。

例如,如果我在中指定了错误的 L/P 凭证

DriverManager.getConnection(url, user, password)    

我需要将ORA 错误本地化为我选择的语言。我使用 Oracle 瘦客户端,设置 NLS_LANG 环境变量不起作用

【问题讨论】:

【参考方案1】:

正如NLS_LANG setting for JDBC thin driver?中所述,这对我来说效果最好

 -Duser.language=en -Duser.region=US

【讨论】:

这是可行的,因为 JDBC 瘦驱动程序查看 Java 语言环境以提取语言,然后在连接建立期间相应地更改数据库会话语言。 DB 会话的语言用于以适当的语言返回错误消息。【参考方案2】:

使用DriverManager.getConnection(String url, Properties info) 方法可能会取得一些成功。

来自文档:

参数:

url - jdbc:subprotocol:subname

形式的数据库 url

info - 作为连接参数的任意字符串标签/值对列表;通常至少应包含“用户”和“密码”属性

也许这样的事情可能会起作用:

String url = ...;
Properties info = new Properties();
info.setProperty("user", ...);
info.setProperty("password", ...);
info.setProperty("NLS_LANG", ...);
DriverManager.getConnection(url, info);

【讨论】:

【参考方案3】:

根据文档----

Providing Globalization Support

The basic Java Archive (JAR) files, ojdbc5.jar and ojdbc6.jar, contain all the necessary classes to provide complete globalization support for:

    Oracle character sets for CHAR, VARCHAR, LONGVARCHAR, or CLOB data that is not being retrieved or inserted as a data member of an Oracle object or collection type.
    CHAR or VARCHAR data members of object and collection for the character sets US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252, and UTF8.

To use any other character sets in CHAR or VARCHAR data members of objects or collections, you must include orai18n.jar in the CLASSPATH environment variable of your application.

【讨论】:

以上是关于为 Oracle JDBC 瘦客户端设置语言的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat、JDBC 瘦客户端和 Oracle 钱包

使用 JDBC 瘦客户端通过 SSL 连接到 Ignite 集群

Oracle笔记

Oracle 中的 JDBC 瘦连接字符串同时使用冒号和正斜杠

如何使用带有 TNSNames 别名语法的 JDBC 瘦驱动程序连接到 Oracle 数据库

oracle 瘦 jdbc 连接在不活动后接收“连接重置”