我试图将数据插入到我的桌面应用程序的Derby嵌入式数据库中。但是Derby给了我模式的错误,而不是找到错误。我试图通过按用户名创建模式来解决错误,但没有解决我的问题。我搜索了互联网,但没有一个解决方案解决了我的问题。
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);
}
}
}发布于 2013-05-11 05:08:19
根据Apache的常见问题,您将看到:
模式仅由
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如果您多次运行此语句,您将得到一个错误,因为该表已经存在。为了解决这个问题,这里。
发布于 2017-08-26 23:10:04
最简单的解决方案是配置数据库属性,并使模式与用户名相同,但在大写列表(例如: schema APP用户应用程序)中。
希望我的回答能有所帮助。
https://stackoverflow.com/questions/16493422
复制相似问题