2009-07-03 314 views
23

我正在使用精簡Oracle JDBC驅動程序版本10.2.0(ojdbc14.jar)。我想手動配置它的NLS_LANG設置。有沒有辦法?JDBC瘦驅動程序的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 

我可以動態更改的區域就在我取的連接,並切換到用戶選擇的一個來回,但這看起來不夠優雅而且效率不高。

回答

13

NLS_LANG設置來自java.util.Locale。因此,你需要在連接之前做出類似這樣的電話:

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

是的,這正是我最終做的。它工作正常,但不是很漂亮。謝謝! – dasp 2009-08-21 12:06:03

9

我打了同樣的問題,並發現瘦JDBC驅動程序甲骨文不需要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 對象或集合的數據成員使用任何其他字符集,你必須 包括orai18n.jar在 應用程序的CLASSPATH 環境變量。

+0

http://docs.oracle.com/cd/E18283_01/java.112/e16548/global.htm – Raven 2015-02-05 19:39:58

1

您應該使用舊的Oracle 9.2 JDBC驅動程序完全兼容和認證與Oracle 10g。舊驅動程序不使用ALTER SESSION SET NLS_LANGUAGE命令。

6

調用java與以下工作對我來說:

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

如果 「恩」 爲國內也引起ORA-12705