2012-02-27 10 views
32

Quindi ho appena iniziato a conoscere come funzionano i database, come utilizzare SQL ect. e ha deciso di iniziare a implementare un database incorporato nella mia applicazione Java (in particolare il database H2) e sembrava funzionare abbastanza bene sul computer su cui stavo codificando.Dove si trovano i database integrati di H2 Memorizzare i dati?

Quando mi sono spostato su un altro computer per continuare la mia codifica ho notato che anche se ho portato il file di database incorporato (h2 - *. Jar) Tutte le tabelle preparate che ho creato nel primo computer non esistono su il secondo. In qualche modo avevo il preconcetto che i dati effettivi generati attraverso il motore di database sono anche memorizzati nel file di database incorporato.

Quindi la mia domanda è: dove sono archiviati i dati dal database? è possibile preparare un database che contiene già migliaia di record e distribuirlo con l'applicazione effettiva?

Devo anche menzionare che il modo in cui mi collego al database sul primo computer era attraverso una connessione JDBC cioè l'URL: JDBC: h2: ~/test e quando ho provato a connettermi a quel database sul secondo computer non esisteva.

Grazie!

risposta

61

Leggi il FAQ:

Dove sono i database file memorizzati?

Quando si utilizzano URL di database come jdbc:h2:~/test, il database viene archiviato nella directory dell'utente. Per Windows, di solito è C:\Documents and Settings\<userName> o C:\Users\<userName>. Se la directory di base non è impostata (come in jdbc:h2:./test), i file di database vengono memorizzati nella directory in cui viene avviata l'applicazione (la directory di lavoro corrente). Quando si utilizza l'applicazione H2 Console dal menu Start, questo è <Installation Directory>/bin. La directory di base può essere impostata nell'URL del database. È possibile utilizzare un percorso fisso o relativo. Quando si utilizza l'URL jdbc:h2:file:./data/sample, il database viene memorizzato nei dati della directory (relativi alla directory di lavoro corrente). La directory viene creata automaticamente se non esiste ancora. È anche possibile utilizzare il nome di directory completo (e per Windows, nome dell'unità). Esempio: jdbc:h2:file:C:/data/test

+1

E nel caso non sia ovvio, su sistemi Linux/MacOSX i file di database H2 sono memorizzati sotto il percorso nell'URL JDBC, quindi '' '~/test''' si trova in' '' $ HOME/test. * .db'''. – DuffJ

10

Il h2-*.jar è solo un motore (il codice) del database. È di sola lettura e non memorizza alcuna informazione. I dati in H2 possono essere memorizzati in memoria o su disco in un file specificato. Si sono effettivamente soddisfino uno:

JDBC:h2:~/test/ 

Troverete la vostra base di dati nella home directory sotto test sottodirectory. Basta copiare questi file in una home directory su un altro computer e H2 li troverà purché utilizzi lo stesso URL.

+1

Dovrebbe essere 'jdbc: h2: ~/test' e non' jdbc: h2: ~ test/'. –

Problemi correlati