有人能告訴我什麼是錯的我的查詢。我有文本框 更新佔用者名稱,但它不起作用,唯一狀態的作品。
不要使用直接的MySql SQL與這些特殊字符`
查詢字符串=「UPDATE rooms
SET occupantname
= ' 「+ txtFirstNames.getText()+」',status
= ''+ gOccupied +''Where roomnumber =「+ CBRoomNumber.getSelectedItem(); 大段引用
Instated使用SQL
下面
查詢字符串= 「???UPDATE客房SET occupantname =,狀態= WHERE roomnumber =」;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Main {
private static PreparedStatement preparedStmt = null;
private static Connection connection = null;
public static void main(String[] args) {
String gOccupied = "Occupied";
String occupantname = txtFirstNames.getText();
String query = "UPDATE rooms SET occupantname = ? , status= ? WHERE roomnumber = ?";
try {
executeSQlquery(query, occupantname, gOccupied, "Updated");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void executeSQlquery(String query, String occupantname, String gOccupied, String status) throws SQLException {
try {
// create a java mysql database connection
String myDriver = "org.mysql.Driver";
String myUrl = "jdbc:mysql://localhost/test";
Class.forName(myDriver);
connection = DriverManager.getConnection(myUrl, "username", "password");
preparedStmt = connection.prepareStatement(query);
preparedStmt.setString(1, occupantname);
preparedStmt.setString(2, gOccupied);
preparedStmt.setInt(3, 101);
// execute the java preparedstatement
preparedStmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//finally block used to close resources
if (preparedStmt != null) {
connection.close();
}
if (connection != null) {
connection.close();
}
}
}
}
它通常是一個可怕的想法來構造SQL查詢你目前做的方式,因爲它開啓了大門,各種SQL注入攻擊。要正確執行此操作,您必須改用Prepared Statements。這也將解決您目前明顯遇到的各種轉義問題。
SQL select statement with where clause
你得到任何錯誤?如果是的話請在上面更新。 –
我沒有任何錯誤。這只是狀態正在更新,但居民名稱不更新 – Francis
嗯,那麼我懷疑「txtFirstNames.getText()」的值沒有變化,請調試它,你可以找到它爲什麼會發生。 –