2009-07-03 48 views
23

Tôi đang sử dụng trình điều khiển JDBC mỏng của Oracle phiên bản 10.2.0 (ojdbc14.jar). Tôi muốn định cấu hình cài đặt NLS_LANG của nó theo cách thủ công. Là có một cách?Cài đặt NLS_LANG cho trình điều khiển mỏng JDBC?

Hiện tại, tìm nạp cài đặt này từ biến VM user.language (được đặt tự động bằng cách đặt ngôn ngữ hiện tại hoặc khi khởi động từ môi trường hệ thống).

Đây là vấn đề khi người dùng chuyển ngôn ngữ ứng dụng sang ngôn ngữ không được trình điều khiển JDBC Oracle hỗ trợ (ví dụ: mk_MK). Trong trường hợp này, thời gian tới, tôi lấy một kết nối tôi nhận được ngoại lệ sau đây:

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

tôi có thể thay đổi vị trí khi đang bay ngay trước khi tôi lấy kết nối và chuyển về đã chọn một trở lại của người dùng và ra, nhưng điều này có vẻ không lành mạnh và không hiệu quả.

Trả lời

13

Cài đặt NLS_LANG được lấy từ java.util.Locale. Vì vậy, bạn sẽ cần phải thực hiện một cuộc gọi tương tự như sau trước khi kết nối:

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

Vâng, đây chính xác là những gì tôi đã làm. Nó hoạt động tốt, nhưng nó không phải là rất đẹp. Cảm ơn! – dasp

9

tôi đang chiến đấu cùng một vấn đề và phát hiện ra rằng jdbc mỏng driver Oracle không yêu cầu NLS_LANG hoặc hệ thống locale để được xác định. Nhưng khi bạn kết nối với cơ sở dữ liệu không phải tiếng Anh, bạn phải có orai18n.jar trong đường dẫn lớp.

từ Hướng dẫn và tham khảo

Cung cấp Hỗ trợ Toàn cầu hóa Oracle® Database JDBC cho nhà phát triển của

Java Archive (JAR) file cơ bản, ojdbc5.jar và ojdbc6.jar, chứa tất cả các lớp học cần thiết để cung cấp hỗ trợ toàn cầu hóa hoàn chỉnh cho:

  • Bộ ký tự Oracle cho CHAR, Dữ liệu VARCHAR, LONGVARCHAR hoặc CLOB không được truy xuất hoặc được chèn làm thành viên dữ liệu của đối tượng hoặc loại bộ sưu tập Oracle .
  • CHAR hoặc VARCHAR thành viên dữ liệu của đối tượng và bộ sưu tập cho các bộ ký tự US7ASCII, WE8DEC, WE8ISO8859P1, WE8MSWIN1252, và UTF8.

Để sử dụng bất kỳ bộ ký tự khác trong CHAR hay VARCHAR dữ liệu thành viên của đối tượng hay các bộ sưu tập, bạn phải bao gồm orai18n.jar trong biến môi trường CLASSPATH áp dụng của bạn.

+0

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

17

Xem thêm: https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536

Đối với tôi câu trả lời tốt nhất là bằng cách FoxyBOA để gọi ứng dụng java với:

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

Vui nhộn. Bỏ phiếu cho câu trả lời của riêng bạn được đăng ở đây: D – FoxyBOA

+1

+1 vì nó ít xâm phạm hơn câu trả lời hiện được chấp nhận. –

+0

Cảm ơn. Làm việc cho SQLDeveloper và cũng cho nguồn dữ liệu web-logic – WelcomeTo

1

Bạn nên sử dụng Oracle 9.2 JDBC driver cũ đó là hoàn toàn tương thích và chứng nhận với Oracle 10g. Trình điều khiển cũ không sử dụng lệnh ALTER SESSION SET NLS_LANGUAGE.

6

Gọi java với các công việc sau cho tôi:

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

nếu "en" cho đất nước cũng gây ORA-12705.

+0

Đó là vì không có quốc gia "EN". Có: US, GB và nhiều ngôn ngữ khác có tiếng Anh là ngôn ngữ chính thức –

Các vấn đề liên quan