Java Derby嵌入式数据库创建表结构

Java Derby嵌入式数据库创建表结构,java,swing,netbeans,derby,Java,Swing,Netbeans,Derby,我正在尝试使用netbeans IDE创建一个带有嵌入式数据库的swing应用程序。首先在netbeans服务选项卡中,我创建了一个数据库,并使用嵌入式驱动程序进行连接。然后我在那里创建了所有的表和关系 在swing应用程序中,我像这样连接嵌入式数据库 private static String dbURL = "jdbc:derby:derbysample;create=true;user=root;password=root"; Class.forName("org.apache.derb

我正在尝试使用netbeans IDE创建一个带有嵌入式数据库的swing应用程序。首先在netbeans服务选项卡中,我创建了一个数据库,并使用嵌入式驱动程序进行连接。然后我在那里创建了所有的表和关系

在swing应用程序中,我像这样连接嵌入式数据库

private static String dbURL = "jdbc:derby:derbysample;create=true;user=root;password=root";

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            //Get a connection
            conn = DriverManager.getConnection(dbURL);
这将创建数据库,我可以连接。但是我没有创建我创建的表。它是一个独立的应用程序。因此,对于不同的机器,它需要创建数据库和表。有很多解决方案吗

  • 以编程方式创建表[添加另一个java文件以创建表和关系]
  • 获取数据库的模式并构建它
我的问题是“在独立应用程序中,有没有简单的方法可以将数据库结构添加到嵌入式数据库中?”

问题的摘要是:- 使用具有大量表和关系的derby嵌入式数据库。最佳解决方案是什么

  • 以编程方式创建表-如何使其仅运行一次 每次安装的时间
  • 使用ant构建工具生成表
  • 还有别的办法吗

  • 我假设您想要的是在安装期间创建一个包含特定表的数据库,并在安装之后使用相同的表

    Derby是一个轻量级数据库,存储在单个目录中。创建表就像执行create table sql查询一样简单。请在安装时运行此操作。
    create=true;
    在连接字符串中表示如果未找到匹配的数据库(在给定路径中),则创建一个空数据库。此操作应仅在安装时完成

    您提到您使用表创建了数据库。从应用程序连接时,您得到了一个空数据库。
    看起来应用程序无法在给定路径(derbysample工作目录下的目录)访问以前创建的数据库,并且正在创建新数据库。请尝试在连接字符串中提供完整路径,但不使用create=true

    私有静态字符串dbURL=“jdbc:derby:d:\\somepath\\derbysample;用户=根用户;密码=根“


    这将迫使应用程序使用现有(以前创建的)数据库,如果找不到该数据库,则引发异常。

    请查看Liquibase。它是一种模式管理工具,还具有Java API。