2016-11-19 145 views
0

我已經創建了一個基於GUI的酒店管理系統在Java netbeans中與Ms Access數據庫連接。在數據庫中,我有一個名爲「RoomInfo」的表。從NetBeans插入Access數據庫

當我嘗試執行以下查詢時,出現兩種錯誤。

String sql = "INSERT INTO RoomInfo(RoomNumber,Reserved,RoomCategory,AirConditioned, 
    BedType, RentPerDay)VALUES("+objr.roomno+","+objr.reserved+","+objr.category+"," 
    +objr.AirConditioned+","+objr.bedtype+","+objr.rent+")"; 

第一個錯誤是net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 unexpected token: ,當我把一切都JTextFields將空的,並嘗試在該數據庫中插入新的記錄,我得到這個錯誤。

第二個錯誤是net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 user lacks privilege or object not found: Economy(經濟是房間類別的入口)當我將數據輸入Jtextfields並嘗試將其保存到數據庫時,出現此錯誤。

需要幫助來識別問題。

+1

兩個問題:??(1)你應該使用問號(?'')作爲你的SQL命令文本參數佔位符,如'... VALUES(,? ,?,?,?)'。 (2)你試圖插入行之後,而不是之前,你正在做的「沒有任何字段可以留空」。 –

回答

3

而不是直接將變量名稱傳遞給sql字符串,然後使用ps.setString()重新設置它們。只需在sql字符串中使用佔位符。 我的意思是

String sql = "INSERT INTO RoomInfo (RoomNumber, Reserved, RoomCategory, AirConditioned, BedType, RentPerDay) 
VALUES (?, ?, ?, ?,?)"; 
     ps = con.prepareStatement(sql); 

     ps.setString(1, objr.roomno); 
     ps.setString(2, objr.reserved); 
     ps.setString(3, objr.category); 
     ps.setString(4, objr.AirConditioned); 
     ps.setString(5, objr.bedtype); 
     ps.setString(6, objr.rent); 
+0

感謝您的回覆。所以我的INSERT QUERY的語法是錯誤的? – Yousaf

+0

這樣看。 – Charles