Java在运行时无法看到derby数据库表

时间:2014-08-16 19:59:28

标签: java database netbeans database-connection derby

问题:

我正在创建一个需要使用集成数据库的应用程序,但是我在使应用程序连接到数据库/表时遇到问题。不幸的是,我对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:Table / View&#39; APP.DATASTORE&#39;不存在.BUILD 成功(总时间:1秒)

我的数据库设置:

Data Base Setup

我尝试删除&#34; APP。&#34;但这导致应用程序无法找到表格&#34; ROOT.DATASTORE&#34;。

如果有人能够帮助我,那就太棒了!

更新:

我现在可以看到,在运行应用程序时,它正在包的根目录中创建数据库文件。因此,嵌入式驱动程序连接必须正常工作(至少就像我看到的那样)。我的问题是数据库应该放在这里还是应该放在&#34; dist&#34;文件夹?

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

2 个答案:

答案 0 :(得分:0)

你在那里放了一个分号

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

将其删除 这是正确的代码

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

答案 1 :(得分:0)

所以这个问题的答案很简单,因为我在经过一段时间的修补后发现了这个问题。

Netbeans会创建一个持久的xm​​l文件,该文件存储应用程序启动时使用的一些数据。更准确地说,当数据库启动时。其中一个选项是使用哪个连接。

我所要做的就是将此连接更改为我的嵌入式驱动程序连接,它现在正在运行。