2009-07-03 14 views
23

Używam cienkiego sterownika Oracle JDBC w wersji 10.2.0 (ojdbc14.jar). Chciałbym ręcznie skonfigurować jego ustawienie NLS_LANG. Czy istnieje sposób?Ustawienia NLS_LANG dla cienkiego sterownika JDBC?

Obecnie pobiera to ustawienie ze zmiennej VM user.language (która jest ustawiana automatycznie przez ustawienie bieżących ustawień narodowych lub podczas uruchamiania ze środowiska systemowego).

Jest to problem, gdy użytkownicy przełączają ustawienia narodowe aplikacji na takie, które nie jest obsługiwane przez sterownik Oracle JDBC (np. Mk_MK). W tym przypadku, gdy następnym razem przyniosę połączenia pojawia się następujący wyjątek:

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

mogę zmienić ustawienia regionalne w locie tuż przed sprowadzić połączenie i powrócić do użytkownika wybrany jednym tam iz powrotem, ale wydaje się to nieeleganckie i nieskuteczne.

Odpowiedz

13

Ustawienia NLS_LANG pochodzą z java.util.Locale. Dlatego trzeba będzie wykonać połączenie podobny do tego przed podłączeniem:

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

Tak, właśnie to zrobiłem. Działa dobrze, ale nie jest zbyt ładna. Dzięki! – dasp

9

walczyłem ten sam problem i okazało się, że kierowcy cienką JDBC Oracle nie wymagają NLS_LANG lub regionalnych systemu, które zostaną określone. Ale kiedy połączysz się z nie-angielskimi bazami danych, będziesz mieć orai18n.jar w ścieżce klas.

od Guide and Reference

zapewniając wsparcie globalizacji Oracle JDBC bazy danych programisty

Podstawowe (JAR) pliki Java Archive, ojdbc5.jar i ojdbc6.jar zawierają wszystko niezbędne klasy, aby zapewnić pełną obsługę globalizacji dla:

  • Oracle zestawów znaków dla Char VARCHAR LONGVARCHAR lub CLOB danych, który nie jest pobierane lub wstawione jako członka danych o Oracle obiektu lub gromadzenia typu.
  • CHAR lub VARCHAR członków danych obiektu i kolekcja dla zestawów znaków US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252 i UTF8.

Aby używać innych zestawów znaków w CHAR lub VARCHAR członków danych z obiektów lub kolekcji, należy obejmują orai18n.jar w środowisku zmiennej aplikacji CLASSPATH .

+0

http://docs.oracle.com/cd/E18283_01/java.112/e16548/global.htm – Raven

17

Zobacz także: https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536

Dla mnie najlepszą odpowiedź była przez FoxyBOA powołać java app z:

-Duser.country=en -Duser.language=en 
+0

Zabawne. Głosuj na własną odpowiedź tutaj: D – FoxyBOA

+1

+1, ponieważ jest o wiele mniej inwazyjna niż obecnie akceptowana odpowiedź. –

+0

Dzięki. Pracował dla SQLDeveloper, a także dla źródła danych web-logicznych. – WelcomeTo

1

należy użyć starego Oracle 9.2 JDBC sterownik, który jest w pełni kompatybilny i certyfikowane z Oracle 10g. Stary sterownik nie używa poleceń ALTER SESJI USTAW NLS_LANGUAGE.

6

Wywoływanie java z następujących utworów dla mnie:

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

jeśli "en" dla kraju powoduje również ORA-12705.

+0

To dlatego, że nie ma kraju "EN". Istnieją: US, GB i wiele innych, które mają angielski jako język urzędowy –

Powiązane problemy