我已经用数据库创建了一个GUI alp。我的嵌入式连接有问题。 我在服务选项卡中创建了此嵌入式连接>司机> Java DB(嵌入式)和连接使用。 我输入的数据如下:
; 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());
}
}
表:
答案 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
然后您会发现您始终使用相同的数据库,下次打开该数据库时,您的数据将会存在。