Netbeans德比嵌入错误

时间:2016-03-17 16:32:00

标签: tableview derby javadb

我已经用数据库创建了一个GUI alp。我的嵌入式连接有问题。 我在服务选项卡中创建了此嵌入式连接>司机> Java DB(嵌入式)和连接使用。 我输入的数据如下: enter image description here

; create = true是我写的,因为它通常不会在app文件夹中创建数据库文件夹。我创建了一个表,并将该URL放在jer代码con = DriverManager.getConnection

当我启动应用程序时,当我在应填写此数据库的相应字段中输入数据时,会出现以下错误:   java.-sql.SQLSyntaxErrorException:Table / View' nameTable'不存在!

我首先将derby.jar驱动程序添加到库中,然后添加了Netbeans附带的Java DB驱动程序,但错误仍然存​​在。无论我做什么,都会出现同样的错误。

这是一段代码:

private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
   try {     Connection con;

            Connection db = null;

        con = DriverManager.getConnection("jdbc:derby:testBase;create=true ", "app", "admin77");

        Statement stmt = con.createStatement();
        String Query ="INSERT  INTO LINGU (NAME , CONCTRACTNO , EMAIL , PHONE , VIBER ) VALUES ('"+fNameLname.getText()+"' , '"+contTxt.getText()+"' , '")
        stmt.execute(Query);

       JOptionPane.showMessageDialog(null,"You have successfully added this vendor to the list of Lingu vendors.");

        fNameLname.setText(null);
        contTxt.setText(null);
        emailTxT.setText(null);
        phoneTxT.setText(null);
        viberBox.setSelectedIndex(0);
    }     
    catch(SQLException ex){
        JOptionPane.showMessageDialog(null, ex.toString());
    }
}                                       

表:

http://i.imgur.com/nJKa9zV.png

1 个答案:

答案 0 :(得分:0)

使用类似jdbc:derby:testBase;create=true的JDBC连接URL,您告诉Derby访问名为testBase的数据库,该数据库位于名为testBase的文件夹中,相对于当前的任何内容运行程序时的工作目录。

你也告诉Derby,如果在运行你的程序时相对于当前工作目录的名称为testBase的文件夹中没有数据库,Derby应该继续创建一个新的空数据库在那个位置。

这种方法很容易让自己感到困惑,因为如果你在一个目录中运行一次程序,并创建一些表并加载一些数据,然后在另一个目录中再次运行程序,它看起来就像你的所有表消失了,你的所有数据都消失了。

(事实并非如此,只是您现在已经创建了两个不同的数据库,并且您对使用哪个数据库以及哪个程序运行感到困惑。)

请注意,从Derby的角度来看,NetBeans IDE只是另一个使用Derby的程序,而NetBeans IDE本身也有自己的“当前工作目录”,几乎肯定不一样作为手动运行程序时使用的当前工作目录。

Derby能够为数据库位置使用相对文件系统路径,并且能够按需安静地制造新的空数据库(create=true)是非常好的功能,但是当您刚刚开始时它们也会非常混乱学习德比。

一个相当简单的替代方法是避免在JDBC连接URL中使用相对数据库路径名,而是始终使用绝对数据库路径名,如:

jdbc:derby:/path/to/my/db/folder/testBase

然后您会发现您始终使用相同的数据库,下次打开该数据库时,您的数据将会存在。