我正在嘗試對我的專案進行 CRUD(創建、讀取、更新、洗掉)。但似乎“更新”不起作用。它一直在說
java.sql.SQLSyntaxErrorException : You have an error in your SQL syntax; check the manual that coresponds to your MariaDB server version for the right syntax to use near "Number" = 0813874810 WHERE Name = "Gregory" at line 1)
這有什么解決辦法?
這是我的代碼:
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/employeedata", "root", "");
String sql = "UPDATE employeetab SET Name = '" txtEmployeeName.getText()
"',Address = '" txtEmployeeAddress.getText()
"',Gender = '" gender_type
"',Phone Number = '" txtEmployeePhone.getText()
"' WHERE Name = '" txtEmployeeName.getText() "'";
stm = conn.prepareStatement(sql);
stm.execute(sql);
JOptionPane.showMessageDialog(this, "Update successfully");
this.setVisible(false);
uj5u.com熱心網友回復:
問題來自 column 中的空間Phone Number
。要使其作業,您需要使用`轉義列名。
UPDATE employeetab
SET Name = 'something',Address = 'some address',Gender = 'whatever',`Phone Number` = '000000000'
WHERE Name = 'something';
您應該遵循 sql 命名約定,通常列名中的單詞以 . 分隔_
。您的列名應該是 - phone_number
。
此外,正如評論中提到的,您不應該只將用戶輸入添加到 sql 查詢中,因為您對sql injection敞開大門。
uj5u.com熱心網友回復:
您需要遵循命名約定,它們是“電話號碼”列之間的空格,您不應該這樣寫,您需要在這兩者之間添加 _。
uj5u.com熱心網友回復:
試試這個 :
String gender_type = null;
if (ButtonM.isSelected()){
gender_type = "Male";
}else if(ButtonFM.isSelected()){
gender_type = "Female";
}
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/employeedata","root","");
String sql = "UPDATE employeetab SET Name = ? ,"
" Address = ? ,"
" Gender = ? ,"
" Phone Number = ? ,"
" WHERE Name = ? ," ;
PreparedStatement pStmt = conn.prepareCall(sql);
pStmt.setString(1, txtEmployeeName.getText() "");
pStmt.setString(2, txtEmployeeAddress.getText() "");
pStmt.setString(3, gender_type "");
pStmt.setString(4, txtEmployeePhone.getText() "");
pStmt.setString(5, txtEmployeeName.getText());
pStmt.executeUpdate();
JOptionPane.showMessageDialog(this, "Update successfully");
this.setVisible(false);
}catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
它更清潔,應該可以作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/470525.html