德比模式错误
我正在尝试将数据插入到我的桌面应用程序的Derby嵌入式数据库中。 但是Derby给了我错误的Schema Not found错误 。 我试图通过按用户名创建模式来解决错误,但不能解决我的问题。 我搜索了互联网,但没有一个解决方案解决了我的问题。
package derbyd.ui; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class AddStudent extends javax.swing.JFrame { private void bt_saveActionPerformed(java.awt.event.ActionEvent evt) { String conURL = "jdbc:derby:myDB;create=true"; String user = "SOURABH"; String passwd = "pass"; Connection con = null; Statement st = null; String query; ResultSet rs = null; try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); con = DriverManager.getConnection(conURL, user, passwd); st = con.createStatement(); System.out.println("Connection established"); query = "INSERT INTO SOURABH.MyTable VALUES('"+txt_name.getText()+"','"+txt_surname.getText()+"')"; st.executeUpdate(query); System.out.println("Added Successfully"); } catch(Exception e) { System.out.println("Error ->"+e); } } }
根据Apache Derby的常见问题 ,你会看到:
模式仅由
CREATE SCHEMA
创建或在该模式中创建对象(表等)(这是隐式模式创建)。
在您的代码中,您需要先创建表,然后像魅力一样工作。
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); con = DriverManager.getConnection(conURL, user, passwd); st = con.createStatement(); System.out.println("Connection established"); st.executeUpdate("CREATE TABLE MyTable" + "(name VARCHAR(255), surname varchar(255))"); System.out.println("Table created"); query = "INSERT INTO SOURABH.MyTable VALUES(" + "'" + txt_name.getText() + "','" + txt_surname.getText() + "')"; st.executeUpdate(query); System.out.println("Added Successfully");
输出是:
Connection established Table created Added Successfully
如果多次运行此语句,则会出现错误,因为该表已存在。 在这里处理这个问题 。
最简单的解决方案是配置数据库属性并使架构与用户名相同,但在资本来源中:架构APP用户应用程序
希望我的回答能有所帮助。