Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle JDBC精简驱动程序的NLS_LANG设置?_Oracle_Jdbc_Nls_Ora 12705 - Fatal编程技术网

Oracle JDBC精简驱动程序的NLS_LANG设置?

Oracle JDBC精简驱动程序的NLS_LANG设置?,oracle,jdbc,nls,ora-12705,Oracle,Jdbc,Nls,Ora 12705,我使用的是精简Oracle JDBC驱动程序10.2.0版(ojdbc14.jar)。我想手动配置它的NLS_LANG设置。有办法吗 当前,它从VM变量user.language(通过设置当前区域设置或从系统环境启动时自动设置)获取此设置 当用户将应用程序区域设置切换到Oracle JDBC驱动程序不支持的区域设置(例如mk_mk)时,这是一个问题。在本例中,下一次获取连接时,会出现以下异常: ORA-00604: error occurred at recursive SQL level 1

我使用的是精简Oracle JDBC驱动程序10.2.0版(ojdbc14.jar)。我想手动配置它的NLS_LANG设置。有办法吗

当前,它从VM变量user.language(通过设置当前区域设置或从系统环境启动时自动设置)获取此设置

当用户将应用程序区域设置切换到Oracle JDBC驱动程序不支持的区域设置(例如mk_mk)时,这是一个问题。在本例中,下一次获取连接时,会出现以下异常:

ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified ORA-00604:递归SQL级别1发生错误 ORA-12705:无法访问NLS数据文件或指定的环境无效
在获取连接并来回切换回用户选择的连接之前,我可以动态更改区域设置,但这似乎是不合法和无效的。

NLS_LANG设置源自java.util.locale。因此,在连接之前,您需要拨打类似的电话:

Locale.setDefault(Locale.<your locale here>);
Locale.setDefault(Locale.);

我也遇到了同样的问题,发现瘦jdbc Oracle驱动程序不需要指定NLS_LANG或系统语言环境。但是,当您连接到非英语数据库时,必须在类路径中包含orai18n.jar

来自《Oracle®数据库JDBC开发人员指南和参考》

提供全球化支持

基本Java归档(JAR)文件, ojdbc5.jar和ojdbc6.jar,包含所有 要提供的必要类 完全全球化支持:

  • 字符的Oracle字符集, VARCHAR、LONGVARCHAR或CLOB数据 未被检索或删除的 作为Oracle的数据成员插入 对象或集合类型
  • 字符或 对象的VARCHAR数据成员和 字符集的集合 US7ASCII、WE8DEC、WE8ISO8859P1、, WE8MSWIN1252和UTF8
在中使用任何其他字符集 的CHAR或VARCHAR数据成员 对象或集合,您必须 在类路径中包括orai18n.jar 您的环境变量 应用程序

另见:

对我来说,最好的回应是由FoxyBOA调用java应用程序:

-Duser.country=en -Duser.language=en

您应该使用与Oracle 10g完全兼容并经过认证的旧Oracle 9.2 JDBC驱动程序。旧的驱动程序不使用ALTER SESSION SET NLS_语言命令。

调用java时,以下操作对我有用:

-Duser.country=us -Duser.language=en

如果国家的“en”也会导致。

是的,这正是我最终所做的。它工作得很好,但不是很漂亮。谢谢上帝回答。使用
Locale.US
模仿
AMERICAN
语言设置。在这里交叉张贴自己的答案:D+1,因为它比目前接受的答案侵入性小得多。谢谢。为SQLDeveloper和web逻辑数据源工作这一个解决了我的问题:-Duser.language=en-Duser.region=us这是因为没有“en”国家。有:美国、英国和许多其他以英语为官方语言的国家