2010-09-28 35 views
6

Cần di chuyển cơ sở dữ liệu và ghi tệp của tệp dbDB JavaDB (derby) vào các thư mục triển khai. Cơ sở dữ liệu đang làm việc trong thư mục khởi động ứng dụng khi JavaDB tạo một thư mục với tên của cơ sở dữ liệu (trong mydb của tôi), nhưng tôi muốn chuyển thư mục đó vào một thư mục con được gọi là data/create data/mydb. Tôi có thể thực hiện việc này với cuộc gọi kết nối:Thiết lập theo hệ thống derby.system.home

DriverManager.getConnection("jdbc:derby:data/mydb;create=false"); 

và hoạt động. Nhưng tôi muốn thiết lập trình một cách rõ ràng giá trị của

derby.system.home = dữ liệu/
derby.stream.error.file = log/derby.log

Vì vậy, tôi có thể làm:

DriverManager.getConnection("jdbc:derby:mydb;create=false"); 

và tất cả các dbs sẽ nằm trong dữ liệu/thư mục đó. Và tệp nhật ký derby sẽ nằm trong nhật ký /! Tôi không thể hình dung ra điều này. Bất cứ ai giúp đỡ? Có cách nào để thiết lập các thuộc tính theo chương trình (vì nó được nhúng)?

Trả lời

5

Các documentation (Derby developers guide: Setting Derby properties) cho thấy một cái gì đó như:

Properties p = System.getProperties(); 
p.setProperty("derby.system.home", "C:\databases\sample"); 

Tôi cũng thấy

/* setting an attribute in a Properties object */ 
Properties myProps = new Properties(); 
myProps.put("create", "true"); 
Connection conn = DriverManager.getConnection("jdbc:derby:sampleDB", myProps); 
+0

này làm việc cho thuộc tính cơ sở dữ liệu và tôi thực sự sử dụng một cái gì đó gần với điều này trong mã của tôi. Nhưng điều này không làm việc cho các thuộc tính toàn hệ thống. –

+0

Liên kết trong câu trả lời chứa mã trên trong phần * Thiết lập thuộc tính Derby * -> * Thay đổi các thuộc tính toàn bộ hệ thống theo lập trình *. Vì vậy, lỗi có lẽ là ở nơi khác trong mã của bạn. (Bạn cũng có thể thử cách tiếp cận khác, "Thay đổi các thuộc tính toàn hệ thống bằng cách sử dụng tập tin derby.properties". – aioobe

+1

Không đúng! Phần đầu tiên đã cho tôi đi xuống con đường chính xác. Vì vậy, tôi đã thêm: System.setProperty ("derby.system.home", "./data/") và System.setProperty ("derby.stream.error.file", "../log/derby.log") ; (<- điều này là do thư mục gốc hiện là dữ liệu /) và tất cả đều hoạt động tốt! Tôi không muốn sử dụng tệp derby.properties. –

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