2013-05-11 62 views
-1

我正在尝试将数据插入到我的桌面应用程序的德比嵌入式数据库中。但德比给我错误架构未找到错误。 我试图通过根据用户名创建模式来解决错误,但并未解决我的问题。我搜索了互联网,但没有给出的解决方案解决了我的问题。德比架构错误

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


} 

回答

1

根据的Apache Derby的Frequently Asked Questions,你会发现:

模式是仅由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 

如果你运行该语句不止一次,你会因为表已经存在得到一个错误。对付那个,here

0

最简单的解决办法是配置你的数据库属性和进行模式相同的用户名,但在资本窝 例如: 架构APP 用户应用

希望我的回答可以帮助您。