2012-02-27 160 views
32

所以我刚刚开始学习数据库如何工作,如何使用SQL等。并决定开始在我的Java应用程序(特别是H2数据库)中实现一个嵌入式数据库,并且似乎在我编码的计算机上工作得很好。H2的嵌入式数据库在哪里存储数据?

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

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

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

谢谢!

回答

61

阅读FAQ

到哪里都是在数据库文件存放?

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

+1

如果不是很明显,在Linux/MacOSX系统上,H2数据库文件存储在JDBC URL的路径下,所以可以在$ HOME/test。*中找到〜/ test。 .db'''。 – DuffJ 2014-03-08 13:53:56

10

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

JDBC:h2:~/test/ 

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

+1

它应该是'jdbc:h2:〜/ test'而不是'jdbc:h2:〜test /'。 – 2012-02-27 11:18:12