H2的嵌入式数据库在哪里存储数据?

时间:2012-02-27 08:08:38

标签: java database jdbc h2 embedded-database

所以我最近才开始学习数据库如何工作,如何使用SQL等。并决定开始在我的Java应用程序(特别是H2数据库)中实现嵌入式数据库,并且在我编写的计算机上似乎工作得相当好。

当我移动到另一台计算机继续编码时,我注意到即使我移植了嵌入式数据库文件(h2 - * .jar)我在第一台计算机上创建的所有准备好的表都不存在于第二个。我不知何故有这样一种先见之明,即通过数据库引擎生成的实际数据也存储在嵌入式数据库文件中。

所以我的问题是,数据库中的数据实际存储在哪里?是否可以准备一个已包含数千条记录的数据库并将其与实际应用程序一起分发?

我还应该提一下,我在第一台计算机上连接数据库的方式是通过JDBC连接,即URL:JDBC:h2:〜/ test,当我尝试连接到第二台计算机上的数据库时,它做了不存在。

谢谢!

3 个答案:

答案 0 :(得分:75)

阅读FAQ

  

存储数据库文件在哪里?

     

使用jdbc:h2:~/test等数据库URL时,数据库存储在用户目录中。对于Windows,通常为C:\Documents and Settings\<userName>C:\Users\<userName>。如果未设置基目录(如jdbc:h2:./test),则数据库文件存储在启动应用程序的目录(当前工作目录)中。从开始菜单使用H2控制台应用程序时,这是<Installation Directory>/bin。可以在数据库URL中设置基目录。可以使用固定或相对路径。使用URL jdbc:h2:file:./data/sample时,数据库存储在目录数据中(相对于当前工作目录)。如果目录尚不存在,则会自动创建该目录。也可以使用完全限定的目录名称(对于Windows,驱动器名称)。示例:jdbc:h2:file:C:/data/test

答案 1 :(得分:11)

h2-*.jar只是数据库的引擎(代码)。它是只读的,不存储任何信息。 H2中的数据可以存储在指定文件的内存或磁盘上。你实际上指的是:

JDBC:h2:~/test/

您可以在test子目录下的主目录中找到您的数据库。只需将这些文件复制到另一台计算机上的主目录中,只要它使用相同的URL,H2就会找到它们。

答案 2 :(得分:0)

在Windows中,您需要使用以下值设置JDBC URL:

JDBC URL: jdbc:h2:mem:testdb