我正在使用Eclipse制作一個程式,該程式允許用戶在每次補貨/使用化學品時更新其體積,這需要用戶輸入化學品的ID和他們想增加/減少的數量。然后進行查詢,在資料庫中搜索該化學品的ID,并相應地更新其數量。
然而,我很難讓體積得到更新。我試著將 MySQL 的 UPDATE 陳述句從 這個網站調整為 SET volume = volume amount added, WHERE chemical ID = ID entered by the user; 然而,我的代碼中似乎存在一些語法錯誤,更具體地說,在 UPDATE - SET - WHERE 一行:
public void IDEnter(){
try {
Class.forName("com.mysql.cj.jdbc.Driver")。)
Connection con = DriverManager. getConnection("jdbc:mysql://localhost:8889/StockControlSystem","root","root")。)
Statement stmt = con.createStatement()。
String sql = "Select * from Chemicals where `Chemical ID` ='"/span> txtChemical_ID. getText() "'"。
ResultSet rs = stmt.executeQuery(sql)。
if(rs.next()) {
stmt.executeUpdate("UPDATE Chemicals" "SET `Volume` = rs.getInt(Volume) Integer.parseInt(AmountAdded.getText() ) WHERE `Chemical ID` in (txtChemical_ID.getText())")。)
}
else {
JOptionPane.showMessageDialog(null, "Invalid chemical ID")。
txtChemical_ID.setText(null)。
}
} catch(Exception exc) {
exc.printStackTrace()。
}
}
由于我還是MySQL的新手,誰能幫我糾正一下?非常感謝您的幫助!
uj5u.com熱心網友回復:
你的整個查詢的格式很差。把你的代碼改成這樣:
stmt.executeUpdate("UPDATE Chemicals SET Volume = "
rs.getInt(Volume) Integer.parseInt(AmountAdded.getText() )
" WHERE Chemical_ID in (" txtChemical_ID.getText() ")")。
在查詢中定義列名時不能使用'單引號。單引號是用于字串值的!
盡管如此,這還是會讓人感到不舒服。
盡管如此,這仍然不是最好的方法。使用PreparedStatement!
這種方式:
String updateString = "UPDATE Chemicals SET Volume = ? WHERE Chemical_ID in (?)"; //創建準備好的陳述句,? 被用作數值的占位符。
PreparedStatement preparedStatement = con.prepareStatement(updateString)。
preparedStatement.setString(1, rs.getInt(Volume) Integer.parseInt(AmountAdded.getText()); //設定第一個值。
preparedStatement.setString(2, txtChemical_ID.getText()); //設定第二個。我假設這個txtChemical_ID文本欄位的值是用逗號隔開的,否則這將無法作業!。
preparedStatement.executeUpdate()。
如果你需要閱讀更多關于PreparedStatement的內容,有很多很棒的資源。它們還能防止SQL注入。
uj5u.com熱心網友回復:
我認為你的問題可能出在 "rs.getInt(Volume) "上
。你的:
"UPDATE Chemicals" "SET `Volume` = rs.getInt(Volume
Integer.parseInt(AmountAdded.getText())
WHERE `Chemical ID` in (txtChemical_ID.getText())"/span>
你可以試試這個:
"UPDATE Chemicals" "SET `Volume` ="
Integer.parseInt(AmountAdded.getText() ) "
WHERE `Chemical ID` in ("/span> (txtChemical_ID.getText()) " )"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308527.html
標籤:
