2013-05-11 38 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 用戶應用

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