2012-02-27 19 views
32

Niedawno zacząłem uczyć się, jak działają bazy danych, jak korzystać z SQL ect. i zdecydowałem rozpocząć wdrażanie wbudowanej bazy danych w mojej aplikacji Java (w szczególności w bazie danych H2) i wydawało mi się, że działa ona całkiem dobrze na komputerze, na którym kodowałem.Gdzie osadzone bazy danych H2 przechowują dane?

Po przejściu na inny komputer, aby kontynuować kodowanie, zauważyłem, że nawet jeśli przeportowałem plik wbudowanej bazy danych (h2 - *. Jar) Wszystkie przygotowane tabele utworzone na pierwszym komputerze nie istnieją Druga. W jakiś sposób miałem założenie, że rzeczywiste dane generowane przez silnik bazy danych są również przechowywane w pliku wbudowanej bazy danych.

Moje pytanie brzmi: gdzie są przechowywane dane z bazy danych? czy możliwe jest przygotowanie bazy danych, która już zawiera tysiące rekordów i dystrybuowanie jej za pomocą rzeczywistej aplikacji?

Należy również wspomnieć, że sposób w jaki łączę się z bazą danych na pierwszym komputerze był przez połączenie JDBC, tj. URL: JDBC: h2: ~/test i kiedy próbowałem połączyć się z tą bazą danych na drugim komputerze, to nie istniała.

Dzięki!

Odpowiedz

61

Przeczytaj FAQ:

gdzie są przechowywane pliki bazy danych?

Podczas korzystania z adresów URL bazy danych, takich jak jdbc:h2:~/test, baza danych jest przechowywana w katalogu użytkownika. W przypadku Windows zwykle jest to C:\Documents and Settings\<userName> lub C:\Users\<userName>. Jeśli katalog podstawowy nie jest ustawiony (jak w jdbc:h2:./test), pliki bazy danych są przechowywane w katalogu, w którym uruchamiana jest aplikacja (bieżący katalog roboczy). Podczas korzystania z aplikacji H2 Console z menu startowego jest to <Installation Directory>/bin. Katalog podstawowy można ustawić w adresie URL bazy danych. Można użyć stałej lub względnej ścieżki. Podczas korzystania z adresu URL jdbc:h2:file:./data/sample baza danych jest zapisywana w danych katalogu (w odniesieniu do bieżącego katalogu roboczego). Katalog jest tworzony automatycznie, jeśli jeszcze nie istnieje. Możliwe jest również użycie w pełni kwalifikowanej nazwy katalogu (i dla Windows, nazwa napędu). Przykład: jdbc:h2:file:C:/data/test

+1

W przypadku, gdy nie jest to oczywiste, w systemach Linux/MacOSX pliki bazy danych H2 są przechowywane pod ścieżką w adresie URL JDBC, więc '' ~ ~ test'' 'można znaleźć w' '' $ HOME/test. * .db'''. – DuffJ

10

h2-*.jar to tylko silnik (kod) bazy danych. Jest tylko do odczytu i nie przechowuje żadnych informacji. Dane w H2 mogą być przechowywane w pamięci lub na dysku w określonym pliku. Jesteś rzeczywiście określenie jednego:

JDBC:h2:~/test/ 

Musisz odnaleźć swoją bazę w katalogu domowym pod test podkatalogu. Po prostu skopiuj te pliki do katalogu domowego na innym komputerze, a H2 znajdzie je tak długo, jak używa tego samego adresu URL.

+1

Powinien to być 'jdbc: h2: ~/test', a nie' jdbc: h2: ~ test/'. –