找不到 Derby 数据库,如何在 Java 中连接
Posted
技术标签:
【中文标题】找不到 Derby 数据库,如何在 Java 中连接【英文标题】:Unable to find Derby database, how to connect in Java 【发布时间】:2014-05-24 23:00:44 【问题描述】:我有一个 mysql 数据库,其中包含一些表和记录。我编写了一个 Java 应用程序,在开发过程中使用了 MySQL 数据库。现在既然开发完成了,我希望将我的程序与一个 Derby Embedded 数据库一起制作一个可执行的 JAR。
我在互联网上看到一个名为 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;
【问题讨论】:
【参考方案1】:由于您将数据库指定为“AppleDB”,没有完整的绝对路径名,因此它在运行时存储在 SquirrelSQL 主目录中名为 AppleDB 的文件夹中。
在您的硬盘上搜索一个名为 AppleDB 的文件夹,您将找到您的数据库。
如果您愿意,您可以将其移动到更合适的位置(只需重命名文件夹),然后更新您的 JDBC 连接 URL 以指定文件夹的完整绝对路径名,这样您就不会忘记它未来。
在您的 Java 程序中,您只需在运行 Java 程序时的当前目录中,在硬盘上的不同文件夹中创建另一个名为 AppleDB 的数据库。由于该程序不包含您使用 Squirrel 导入的数据,因此您可以丢弃该文件夹(将其放入垃圾箱)。
如果您未在 JDBC 连接 URL 中指定“;create=true”,Derby 将不会自动创建新数据库,但如果您在尝试时指定了错误的数据库路径,则会给您一条错误消息打开它。
【讨论】:
以上是关于找不到 Derby 数据库,如何在 Java 中连接的主要内容,如果未能解决你的问题,请参考以下文章
Derby 嵌入式驱动程序 - 将应用程序导出到 JAR 后“找不到类”
德比和日食。 “找不到主要”异常。如何将 Derby 添加到配置类路径?