2012-02-27 27 views
32

Así que recientemente empecé a aprender cómo funcionan las bases de datos, cómo usar SQL ect. y decidí comenzar a implementar una base de datos incrustada en mi aplicación Java (específicamente la base de datos H2) y parecía funcionar bastante bien en la computadora que estaba codificando.¿Dónde se almacenan los datos en las bases de datos incrustadas de H2?

Cuando me mudé a una computadora diferente para continuar mi codificación, noté que incluso si portaba el archivo de base de datos incrustado (h2 - *. Jar) no existían todas las tablas preparadas que creé en la primera computadora el segundo. De alguna manera tuve la idea de que los datos reales generados a través del motor de la base de datos también se almacenan en el archivo de base de datos incrustado.

Así que mi pregunta es, ¿dónde se almacenan realmente los datos de la base de datos? ¿Es posible preparar una base de datos que ya contenga miles de registros y distribuirla con la aplicación real?

También debo mencionar que la forma en que me conecté a la base de datos en la primera computadora fue mediante una conexión JDBC, es decir, la URL: JDBC: h2: ~/test y cuando traté de conectarme a esa base de datos en la segunda computadora no existió.

Gracias!

Respuesta

61

Leer el FAQ:

dónde la base de datos de archivos almacenados?

Al usar URL de base de datos como jdbc:h2:~/test, la base de datos se almacena en el directorio de usuario. Para Windows, generalmente es C:\Documents and Settings\<userName> o C:\Users\<userName>. Si el directorio base no está configurado (como en jdbc:h2:./test), los archivos de la base de datos se almacenan en el directorio donde se inicia la aplicación (el directorio de trabajo actual). Al usar la aplicación H2 Console desde el menú de inicio, esto es <Installation Directory>/bin. El directorio base se puede establecer en la URL de la base de datos. Se puede usar una ruta fija o relativa. Cuando se utiliza la URL jdbc:h2:file:./data/sample, la base de datos se almacena en los datos del directorio (relativos al directorio de trabajo actual). El directorio se crea automáticamente si aún no existe. También es posible usar el nombre completo del directorio (y para Windows, nombre de la unidad). Ejemplo: jdbc:h2:file:C:/data/test

+1

Y en caso de que no sea obvio, en los sistemas Linux/MacOSX los archivos de la base de datos H2 se almacenan bajo la ruta en la URL JDBC, por lo que '' '~/test''' se encontraría en' '' $ HOME/test. * .db'''. – DuffJ

10

El h2-*.jar es solo un motor (el código) de la base de datos. Es de solo lectura y no almacena ninguna información. Los datos en H2 se pueden almacenar en la memoria o en el disco en un archivo especificado. En realidad se está especificando uno:

JDBC:h2:~/test/ 

encontrará su base de datos en el directorio de inicio bajo test subdirectorio. Simplemente copie estos archivos en un directorio de inicio en otra computadora y H2 los encontrará siempre que use la misma URL.

+1

Debe ser 'jdbc: h2: ~/test' y no' jdbc: h2: ~ test/'. –

Cuestiones relacionadas