1

所以我有一个应用程序,它使用一个数据库,现在我需要在应用程序中使用一个嵌入式数据库,这样你所做的就是安装程序,并且数据库已经存在(所以客户端不必安装mysql 服务器、wamp、xampp 等运行 mysql 数据库的副本)及其所有信息。

我已经将应用程序导出到一个 jar 文件中,然后将其完美地制成一个 exe 文件,并且可以在我的电脑上运行,但是当我将它复制到另一台电脑并运行它时,数据库在那里,但表数据我放的桌子不见了。我究竟做错了什么?

提前致谢

4

2 回答 2

0

有多种选择。一种选择是:

  • 使用 SQL 语句从当前数据库创建 SQL 脚本文件SCRIPT TO '~/script.sql'
  • 将文件script.sql从您的用户主目录复制到应用程序的源目录,以便您可以将其捆绑为资源。使用应用程序源代码的根目录(因为这是最简单的解决方案)。
  • 在目标计算机中,使用数据库 URL jdbc:h2:~/data;INIT=runscript from 'classpath:script.sql'。这将打开数据库并运行脚本。它将脚本作为资源读取。

还有其他选项,但它们要求您阅读 H2 数据库的文档

于 2013-09-22T12:00:38.793 回答
0

查看类似的问题(使用导出的数据库到 H2),我发现上面的答案很有用,但没有设法使 SCRIPT TO 工作。我的数据库是 mySQL。将数据库导出为对我有用的脚本的方法是来自 linux shell:

mysqldump -u[user] [databasename] > exportscriptfile.sql

然后我必须对脚本做一些润色工作,以便 H2 可以阅读它(参见这个 SO 线程上的类似内容)

这是我使用 jdbc EmbeddedDatabaseBuilder 工作的基于 java 的弹簧配置。此处创建为 bean 的数据源可用于任何 jdbc 调用:

@Configuration
public class H2DBConfig  {

@Bean
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("classpath:exportscriptfile.sql")
        .build();
}
于 2013-09-26T09:36:51.980 回答