Настройка NLS_LANG для тонкого драйвера JDBC?

Я использую тонкий драйвер Oracle JDBC версии 10.2.0 (ojdbc14.jar). Я хотел бы настроить его NLS_LANG вручную. Есть ли способ?

В настоящее время он выбирает этот параметр из переменной VM user.language (которая устанавливается автоматически путем установки текущего языкового стандарта или при запуске из системной среды).

Это проблема, когда пользователи переключают языковой стандарт приложения на тот, который не поддерживается драйвером JDBC Oracle (например, mk_MK). В этом случае при следующем подключении я получаю следующее исключение:

ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

Я могу изменить язык на лету непосредственно перед тем, как получить соединение и переключиться обратно к выбранному пользователем назад и вперед, но это кажется нелегким и неэффективным.

Ответы на вопрос(5)

Решение Вопроса

Настройки NLS_LANG являются производными от java.util.Locale. Поэтому перед подключением вам необходимо сделать такой же вызов:

Locale.setDefault(Locale.<your locale here>);
 dasp21 авг. 2009 г., 14:06
Да, именно это я и сделал. Работает нормально, но не очень красиво. Спасибо!

Я боролся с той же проблемой и обнаружил, что для тонких драйверов Oracle jdbc не требуется указывать NLS_LANG или локаль системы. Но когда вы подключаетесь к неанглийским базам данных, вы должны иметь orai18n.jar в пути к классам.

отOracle® Database JDBC Developer’s Guide and Reference

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.

 05 февр. 2015 г., 20:39

Смотрите также:https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536

Для меня лучший ответ был FoxyBOA, чтобы вызвать приложение Java с:

-Duser.country=en -Duser.language=en
 19 сент. 2012 г., 12:20
Смешной. Проголосуй за собственный ответ кросс-пост здесь: D
 17 июл. 2014 г., 15:59
Благодарю. Работал для SQLDeveloper, а также для источника данных веб-логики.
 28 июл. 2014 г., 22:04
Это решило мою проблему: -Duser.language = en -Duser.region = US
 20 сент. 2012 г., 20:42
+1, поскольку он намного менее инвазивен, чем принятый в настоящее время ответ.

Вызов Java со следующими работами для меня:

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

если & quot; en & quot; для страны также вызываетORA-12705.

 09 июл. 2014 г., 17:45
Это потому, что не существует "EN" страна. Есть: США, Великобритания и многие другие, в которых английский является официальным языком

который полностью совместим и сертифицирован с Oracle 10g. Старый драйвер не использует команды ALTER SESSION SET NLS_LANGUAGE.

Ваш ответ на вопрос