2014-02-26 132 views
0

我正在使用sql查詢將數據數據添加到現有數據庫表中。 我想在'Room_Resource'和'Quantity'列下添加數據。 該系統旨在允許預訂,我正在嘗試添加對tblBookings表的預訂,下面的代碼取自JButton點擊的功能。Java使用SQL向表中添加數據

  • 我想添加到Room_Resource的值是取自系統中選定表的名稱。我爲這個'resourceChosenString'聲明瞭一個變量
  • 我想添加到數量的值來自我聲明的與組合框有關的'Quantity'變量。

這裏是我的聲明:

int selectedResourceRow = tblResources.getSelectedRow();  
Object resourceChosen = tblResources.getValueAt(selectedResourceRow,1); 
String resourceChosenString = resourceChosen.toString(); 
int Quantity = cmbQuantity.getSelectedIndex(); 

然後我有一個SQL語句:

String sql = ("INSERT INTO tblBookings (Room_Resource,Quantity) VALUES (" + resourceChosenString + " ', ' " + Quantity + " ',) "); 

然後是執行代碼:

try{ 
pst = conn.prepareStatement(sql); 
pst.execute(); 
JOptionPane.showMessageDialog(null, "Added"); 
} catch (Exception e){ 
JOptionPane.showMessageDialog(null, "Error Adding Booking"); 
} 

目前,它給了我一個當我嘗試將數據添加到表中並想知道是否有人有任何錯誤時出錯建議?

此外,我認爲也許問題可能在於我在外部表中有兩個以上的列,而我將這些數據添加到表中,因此列可以留空。如果這可能是問題,誰能告訴我如何解決它?可能的話,如果有一個空函數,我可以使用,而不是值。

+1

你得到的錯誤是什麼,用stacktrace更新你的帖子 – PopoFibo

回答

0

您正在生成的SQL無效,看起來像這樣;

INSERT INTO tblBookings (Room_Resource,Quantity) VALUES (resource ', ' 1 ',) 
                 ^   ^
              missing quote  extraneous comma 

你應該整理它,或者更好的是使用PreparedStatement

String sql = "insert into tblBookings (Room_Resource,Quantity) values (?, ?)"; 
PreparedStatement pst = conn.prepareStatement(sql); 
pst.setString(1, resourceChosenString); 
pst.setInt(2, quantity); //variable names are not capitalised by convention 
pst.execute(); 
0

您可能想告訴我們您正在使用的數據庫以及您收到的錯誤消息。但就在蝙蝠,它看起來像你的SQL字符串格式不正確。我不知道你是否在問題中錯誤輸入了它,或者你的代碼是否有簡單的語法錯誤。

從臀部剛剛拍攝你所擁有的東西,它看起來像你的SQL語句應該是:

String sql = "INSERT INTO tblBookings (Room_Resource,Quantity) VALUES ('" + resourceChosenString + "', " + Quantity + ")"; 

注意resourceChosenString應該用單引號包裹(你缺少的單引號左側)。另外,我不認爲你應該用單引號包裝數字(我可能是錯的,因爲我不知道你使用的是哪個數據庫)。

Qwerky雖然是對的;你應該使用PreparedStatement

相關問題