首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌入式Derby数据库的连接字符串,可与Swing项目的可执行文件一起导出

嵌入式Derby数据库的连接字符串,可与Swing项目的可执行文件一起导出
EN

Stack Overflow用户
提问于 2019-01-12 01:12:30
回答 1查看 725关注 0票数 1

我希望将Derby Embedded Database连接到我的Swing应用程序,以便作为可执行文件导出。

我已经执行了以下步骤。

我已经从Service选项卡创建了Embedded Database。

我已经在我们的嵌入式数据库中创建了表

代码语言:javascript
运行
复制
create table student(id int, name varchar(50), class varchar(10));
insert into student values(1,'Akshay','FYCS'),(2,'Narayan','SYCS');

代码语言:javascript
运行
复制
select * from student;

我已经创建了Swing项目并添加了Derby驱动程序库

然后我编写代码从数据库中检索值

代码语言:javascript
运行
复制
package embeddeddb;

import java.sql.*;

public class EmbeddedDB 
{
    public static void main(String[] args) throws SQLException, ClassNotFoundException
    {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        Connection con=DriverManager.getConnection("jdbc:derby:myDB","username","password");
        Statement stmt=con.createStatement();

        ResultSet rs=stmt.executeQuery("select NAME from STUDENT where ID=1");
        rs.next();
        System.out.println(rs.getString(1));
    }  
}

我得到了这样的错误,

代码语言:javascript
运行
复制
run:
Exception in thread "main" java.sql.SQLException: Database 'myDB' not found.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
    at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at embeddeddb.EmbeddedDB.main(EmbeddedDB.java:11)
Caused by: ERROR XJ004: Database 'myDB' not found.
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)
    ... 14 more
C:\Users\Dell 7559\AppData\Local\NetBeans\Cache\10.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\Dell 7559\AppData\Local\NetBeans\Cache\10.0\executor-snippets\run.xml:94: Java returned: 1
BUILD FAILED (total time: 0 seconds)

我知道问题出在连接字符串上。

代码语言:javascript
运行
复制
Connection con=DriverManager.getConnection("jdbc:derby:myDB","username","password");

如何解决?请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-12 15:36:56

mydb是相对于Derby的系统目录的相对路径,如果使用嵌入式Derby,则缺省为应用程序的当前工作目录。如果您在Netbeans中使用URL,则它是相对于NetBeans当前工作目录的;如果您在自己的应用程序中使用它,则它是相对于该应用程序当前工作目录的。

换句话说,jdbc:derby:myDB使用的数据库是特定于应用程序的(或者更准确地说:特定于当前工作目录)。在NetBeans中,您的数据库存在,而在您的应用程序中,它不存在。

您需要使用数据库的绝对路径,或者确保在适当的位置(例如应用程序的当前工作目录)创建数据库,或者需要通过设置系统属性derby.system.home将Derby配置为使用特定目录。

另请参阅Derby文档Connecting to databases,更具体地说是Connecting to databases within the systemDefining the system directory

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54151155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档