我有一个带有一些表和记录的MySQL数据库。我编写了一个Java应用程序,在开发过程中使用了MySQL数据库。现在,既然开发完成了,我希望与Derby Embedded数据库一起为程序创建可执行的JAR。

我在互联网上读到了一种名为SQuirrel SQL的工具,该工具能够将MySQL数据库复制并转换为Derby数据库,并将数据类型转换为正确的数据类型。因此,现在我已经能够使用SQuirrel SQL GUI将MySQL表复制到Derby数据库。但是,我不知道如何在Java应用程序中访问此数据。

在这里,您可以找到SQuirrel SQL中Alias的屏幕截图。我一直在我的计算机上寻找这些文件的存储位置,但没有找到它们...

因此,有人可以解释它是如何工作的,以及如何在Java应用程序中正确访问Derby数据库吗?我已经在项目中导入了所有必需的Derby jar,并编写了一个小的测试类来创建表,插入数据并将其读出。这一切都完美地工作。

public static final String URL = "jdbc:derby:";
public static final String USER = "root";
public static final String PASSWORD = "root";
public static final String DRIVER_CLASS = "org.apache.derby.jdbc.EmbeddedDriver";

// private constructor
private ConnectionFactory() {
    try {
        startNetworkServerControl();
        Class.forName(DRIVER_CLASS).newInstance();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private Connection createConnection() {
    Connection connection = null;
    try {
        connection = DriverManager.getConnection("jdbc:derby:AppleDB;create=true", USER, PASSWORD);
    } catch (SQLException e) {
        System.out.println("ERROR: Unable to Connect to Database.");
    }
    return connection;
}

最佳答案

由于您将数据库指定为“AppleDB”,没有完整的绝对路径名,因此数据库在运行时存储在SquirrelSQL主目录中名为AppleDB的文件夹中。

在硬盘上搜索一个名为AppleDB的文件夹,您将找到数据库。

如果愿意,可以将其移动到更合适的位置(只需重命名该文件夹),然后更新JDBC连接URL以指定该文件夹的完整绝对路径名,以免日后无法对其进行跟踪。

在Java程序中,运行Java程序时,您只需在硬盘上其他文件夹中的Java程序的当前目录中,创建另一个名为AppleDB的数据库。由于该程序不包含您使用Squirrel导入的数据,因此您可以丢弃该文件夹(将其放入垃圾箱)。

如果未在JDBC连接URL中指定“; create = true”,则Derby将不会自动创建新数据库,但是如果您在尝试打开数据库时指定了错误的路径,则会显示一条错误消息。 。

09-25 16:23
查看更多