java - 无法找到 Derby 数据库,如何在 Java 中连接

标签 java mysql derby squirrel-sql

我有一个 MySQL 数据库,里面有一些表和记录。我编写了一个 Java 应用程序,在开发过程中使用了 MySQL 数据库。现在由于开发已经完成,我希望将我的程序与 Derby 嵌入式数据库一起制作一个可执行的 JAR。

我在 Internet 上了解到,一个名为 SQuirrel SQL 的工具能够将 MySQL 数据库复制和转换为 Derby 数据库,并将数据类型转换为正确的数据类型。所以现在我已经能够使用 SQuirrel SQL GUI 将 MySQL 表复制到 Derby 数据库。但是,我不知道如何在我的 Java 应用程序中访问这些数据。

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

那么有人可以解释这是如何工作的以及我如何在我的 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;
}

SQuirrel SQL Derby Alias

Metadata in SQuirrel SQL

最佳答案

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

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

如果您愿意,您可以将它移动到更合适的位置(只需重命名该文件夹),然后更新您的 JDBC 连接 URL 以指定该文件夹的完整绝对路径名,这样您就不会忘记它 future 。

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

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

关于java - 无法找到 Derby 数据库,如何在 Java 中连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23850462/

相关文章:

java - 在 Eclipse 中运行 junit 测试用例时出错

mysql - perl: 符号查找错误:/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so: undefined symbol: mysql_init

java - <EOF>创建 Derby 表时出现异常

sql - 从java中检索表中的最大列值

php - SELECT 一个任意深的树,用mysql中的邻接表模型表示?

java - SQL语法错误异常 : Column 'TEST' is either not in any table in the FROM list or appears within a join specification

java - 应用程序停止使用 listview arrayadapter

java - android 中的 GCM 与 Socket

java String.replaceAll 正则表达式问题

mysql - 我应该关闭 MySQL 中的查询缓存吗?