Netbeans derby 嵌入式错误

Netbeans derby embedded error

我已经创建了一个带有数据库的 GUI alp。我的嵌入式连接有问题。 我在服务选项卡 > 驱动程序 > Java 数据库(嵌入式)中建立了这个嵌入式连接并使用连接。 我输入数据如下:

;create=true 是我写的,因为一般不会在app文件夹下创建数据库文件夹。我创建了一个 table 并将 URL 放入代码 con = DriverManager.getConnection

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

我先在库中添加了derby.jar驱动,然后添加了Netbeans自带的Java数据库驱动,但是错误依旧。无论我做什么,都会出现同样的错误。

代码如下:

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());
    }
}                                       

Table:

使用 JDBC 连接 URL,如 jdbc:derby:testBase;create=true,您是在告诉 Derby 访问名为 testBase 的数据库,该数据库位于名为 testBase 相对于你 运行 你的程序时的当前工作目录。

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

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

(不是,只是您现在创建了两个 不同的 数据库,并且您对正在使用哪个数据库感到困惑 运行你的程序。)

请注意,从 Derby 的角度来看,NetBeans IDE 只是另一个使用 Derby 的程序,NetBeans IDE 本身有自己的 "current working directory",而且它几乎肯定与您手动 运行 程序时使用的当前工作目录不同。

Derby 为数据库位置使用相对文件系统路径的能力,以及按需安静地制造新的空数据库的能力 (create=true) 是非常好的特性,但是当您刚开始学习 Derby。

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

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

然后你会发现你一直在使用同一个数据库,下次你打开那个数据库时你的数据就会在那里。