Подтвердить что ты не робот

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

Я использую тонкий драйвер JDBC Oracle версии 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

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

4b9b3361

Ответ 1

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

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

Ответ 3

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

из Руководство разработчика и справочник разработчиков баз данных Oracle® Database

Предоставление поддержки глобализации

Основные файлы Java Archive (JAR) ojdbc5.jar и ojdbc6.jar, содержат все необходимые классы для полная поддержка глобализации для:

  • Набор символов Oracle для CHAR, Данные VARCHAR, LONGVARCHAR или CLOB который не извлекается или вставлен как элемент данных Oracle объект или тип коллекции.
  • CHAR или Данные данных VARCHAR объекта и сбор для наборов символов US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252 и UTF8.

Чтобы использовать любые другие наборы символов в CHAR или элементы данных VARCHAR объектов или коллекций, вы должны включить orai18n.jar в CLASSPATH переменная среды вашей приложение.

Ответ 4

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

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

if "en" для страны также вызывает ORA-12705.

Ответ 5

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