我正在使用瘦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
我可以在获取连接之前动态更改语言环境,然后来回切换回用户选择的语音,但这看起来很不优雅且效率低下。
答案 0 :(得分:17)
对我而言,最好的回应是FoxyBOA用以下方式调用java app:
-Duser.country=en -Duser.language=en
答案 1 :(得分:13)
NLS_LANG设置派生自java.util.Locale。因此,在连接之前,您需要进行类似的调用:
Locale.setDefault(Locale.<your locale here>);
答案 2 :(得分:9)
我遇到了同样的问题,发现瘦的jdbc Oracle驱动程序不需要指定NLS_LANG或系统区域设置。但是当你连接到非英语数据库时,你将在类路径中拥有orai18n.jar。
来自Oracle®数据库JDBC开发人员指南和参考
提供全球化支持
基本的Java Archive(JAR)文件, ojdbc5.jar和ojdbc6.jar,包含所有 提供必要的课程 完全全球化支持:
- CHAR的Oracle字符集, VARCHAR,LONGVARCHAR或CLOB数据 没有被检索或 作为Oracle的数据成员插入 对象或集合类型。
- CHAR或 VARCHAR对象和数据的成员 字符集的集合 US7ASCII,WE8DEC,WE8ISO8859P1, WE8MSWIN1252和UTF8。
使用任何其他字符集 CHAR或VARCHAR数据成员 对象或集合,你必须 在CLASSPATH中包含orai18n.jar 你的环境变量 应用
答案 3 :(得分:6)
答案 4 :(得分:1)
您应该使用与Oracle 10g完全兼容且经过认证的旧Oracle 9.2 JDBC驱动程序。旧驱动程序不使用ALTER SESSION SET NLS_LANGUAGE命令。