2012-02-27 24 views
32

Vì vậy, tôi vừa mới bắt đầu tìm hiểu về cách cơ sở dữ liệu hoạt động, cách sử dụng SQL ect. và quyết định bắt đầu triển khai một cơ sở dữ liệu nhúng vào ứng dụng Java của tôi (đặc biệt là cơ sở dữ liệu H2) và dường như hoạt động khá tốt trên máy tính mà tôi đã mã hóa.Cơ sở dữ liệu nhúng của H2 lưu trữ dữ liệu ở đâu?

Khi tôi chuyển sang máy tính khác để tiếp tục mã hóa, tôi nhận thấy rằng ngay cả khi tôi đã chuyển tệp cơ sở dữ liệu được nhúng (h2 - *. Jar) Tất cả các bảng đã chuẩn bị mà tôi đã tạo trong máy tính đầu tiên không tồn tại cái thứ hai. Tôi bằng cách nào đó đã có tiền định rằng các dữ liệu thực tế được tạo ra thông qua các công cụ cơ sở dữ liệu cũng được lưu trữ trong các tập tin cơ sở dữ liệu nhúng.

Vì vậy, câu hỏi của tôi là, dữ liệu từ cơ sở dữ liệu thực sự được lưu trữ ở đâu? có thể chuẩn bị một cơ sở dữ liệu đã chứa hàng nghìn bản ghi và phân phối nó với ứng dụng thực tế không?

Tôi cũng nên đề cập rằng cách tôi kết nối với cơ sở dữ liệu trên máy tính đầu tiên thông qua kết nối JDBC, ví dụ: URL: JDBC: h2: ~/test và khi tôi cố gắng kết nối với cơ sở dữ liệu đó trên máy tính thứ hai không tồn tại.

Cảm ơn!

Trả lời

61

Đọc FAQ:

Đâu là những cơ sở dữ liệu tập tin lưu trữ?

Khi sử dụng URL cơ sở dữ liệu như jdbc:h2:~/test, cơ sở dữ liệu được lưu trữ trong thư mục người dùng. Đối với Windows, thường là C:\Documents and Settings\<userName> hoặc C:\Users\<userName>. Nếu thư mục cơ sở không được thiết lập (như trong jdbc:h2:./test), các tệp cơ sở dữ liệu được lưu trữ trong thư mục nơi ứng dụng được khởi động (thư mục làm việc hiện tại). Khi sử dụng ứng dụng Bảng điều khiển H2 từ trình đơn bắt đầu, đây là <Installation Directory>/bin. Thư mục cơ sở có thể được đặt trong URL cơ sở dữ liệu. Một đường dẫn cố định hoặc tương đối có thể được sử dụng. Khi sử dụng URL jdbc:h2:file:./data/sample, cơ sở dữ liệu được lưu trữ trong dữ liệu thư mục (liên quan đến thư mục làm việc hiện tại). Thư mục được tạo tự động nếu nó chưa tồn tại. Cũng có thể sử dụng tên thư mục đầy đủ (và cho Windows, tên ổ đĩa). Ví dụ: jdbc:h2:file:C:/data/test

+1

Và trong trường hợp không rõ ràng, trên hệ thống Linux/MacOSX, các tệp cơ sở dữ liệu H2 được lưu trữ dưới đường dẫn trong URL JDBC, vì vậy '' '~/test''' sẽ được tìm thấy tại' '' $ HOME/test. * .db'''. – DuffJ

10

h2-*.jar chỉ là động cơ (mã) của cơ sở dữ liệu. Nó là chỉ đọc và nó không lưu trữ bất kỳ thông tin nào. Dữ liệu trong H2 có thể được lưu trữ trong bộ nhớ hoặc trên đĩa trong một tệp được chỉ định. Bạn đang thực sự chỉ định một:

JDBC:h2:~/test/ 

Bạn sẽ tìm thấy cơ sở dữ liệu trong thư mục chính của mình dưới test thư mục con. Chỉ cần sao chép các tập tin này vào một thư mục chính trên một máy tính khác và H2 sẽ tìm thấy chúng miễn là nó sử dụng cùng một URL.

+1

Phải là 'jdbc: h2: ~/test' và không phải' jdbc: h2: ~ test/'. –