【问题标题】:Java not able to see the derby database table when runningJava 在运行时无法看到 derby 数据库表
【发布时间】:2014-08-16 19:59:28
【问题描述】:

问题:

我正在创建一个需要使用集成数据库的应用程序,但在让我的应用程序连接到数据库/表时遇到问题。不幸的是,我对 Java 连接到数据库的知识相当有限,但我所阅读和观看的所有内容似乎都表明我的代码是正确的。

我的代码:

public static void main(String[] args) {
    try{
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        Connection con = DriverManager.getConnection("jdbc:derby:datahold;");
        Statement stat = con.createStatement();

        ResultSet rs = stat.executeQuery("select * from APP.DATASTORE");
        ResultSetMetaData meta=rs.getMetaData();
        int columnCount = meta.getColumnCount();
        for (int x = 1; x <= columnCount; x++)
            System.out.format("%20s",meta.getColumnName(x)+ " | ");

        while (rs.next()){
            System.out.println("");
            for (int x = 1; x <= columnCount; x++) System.out.format("%20s", rs.getString(x)+ " | ");
        }
        if (stat != null) stat.close();
        if (con != null) con.close();
    } catch(Exception e) {
        System.out.print(e);
    }
}

错误:

java.sql.SQLSyntaxErrorException: 表/视图 'APP.DATASTORE' 不存在。BUILD 成功(总时间:1秒)

我的数据库设置:

我已尝试删除“APP”。但这会导致应用程序无法找到表“ROOT.DATASTORE”。

如果有人能在这里帮助我,那就太好了!

更新:

我现在可以看到,在运行应用程序时,它正在包的根目录中创建数据库文件。因此,嵌入式驱动程序连接必须正常工作(至少我是这么看的)。我的问题是数据库应该位于此处还是应该保存在“dist”文件夹中?

我假设它无法看到该表,因为它正在寻找错误的位置。

【问题讨论】:

    标签: java database netbeans database-connection derby


    【解决方案1】:

    你放了一个分号

    DriverManager.getConnection("jdbc:derby:datahold;");
    

    删除它
    这是正确的代码

    DriverManager.getConnection("jdbc:derby:datahold");
    

    【讨论】:

    • 那是因为它曾经有 ; create=true 但我将其删除以进行测试。我已经删除了分号,它仍然会产生同样的错误。
    • 您的代码是否在 netbeans 中运行? @Petay87 我的意思是使用 Netbeans GUI??
    • 是的 - 我正在使用 Netbeans IDE 创建应用程序
    • @Petay87 无法以这种方式帮助您。你能在聊天室“chat.stackoverflow.com/rooms/59002/java-to-android”见我吗?
    • 我在这方面取得了更多进展。这只是使用嵌入式驱动程序连接时的问题。我还注意到似乎正在创建数据库,但它被放在包的根目录中,这不应该在“dist”文件夹中吗?
    【解决方案2】:

    所以这个问题的答案相当简单,因为我在修修补补 HOURS 后发现。

    Netbeans 友好地创建了一个持久性 xml 文件,用于存储应用程序启动时使用的一些数据。更准确地说,当数据库启动时。这些选项之一是使用哪个连接。

    我所要做的就是将此连接更改为我的嵌入式驱动程序连接,它现在可以工作了。

    【讨论】:

    • 很抱歉,您的回答是错误的。这是db安装路径的问题。请注意,您的 netbeans 仍在连接到以前的表,而没有再次创建它。实际上你正在做的是创建一个新表。我明白问题出在哪里。您的netbeans中java db的路径和您正在运行的程序不同。
    • 我认为要让你的程序运行,你可能会再次使用“create=true”附加 db url。这意味着如果它不存在,则创建新数据库。这样在netbeans中显示的db和你的程序使用的db就完全不同了。
    • 我将编辑我的答案,因为我发现问题是持久文件的连接设置错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2021-03-23
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多