2014-08-28 117 views
0

我有一個偵聽器,它偵聽一個按鈕並從輸入中獲取3個文本字段以執行更新查詢。我想執行更新,但在查詢中傳遞我的本地變量(名稱,城市,薪水)。 我能做些什麼?Mysql Java更新查詢

public void actionPerformed(ActionEvent arg0) { 
     final String name; 
     final String city; 
     final String salary; 

     name = (textFieldName.getText()); 
     city = (textFieldCity.getText()); 
     salary = (textFieldSalary.getText()); 

     System.out.println(salary); 
     try { 
       Statement s = connection.createStatement(); 
       s.executeUpdate("INSERT INTO users (name,city,salary) VALUES (name, city,salary)"); 

回答

2

我會去用一個PreparedStatement

PreparedStatement s = connection.prepareStatement("INSERT INTO users (name,city,salary) VALUES (?, ?, ?)"); 
s.setString(1, name); 
s.setString(2, city); 
s.setString(3, salary); 
boolean res = s.execute(); 

這種方法好一點,報價將被自動管理,防止簡單的SQL注入。

+0

PreparedStatements非常好,謝謝! – Saksoo 2014-08-28 10:56:47

+0

@Saksoo glat它幫助了。 PreparedStatements更好的原因有很多,最明顯的是避免SQL注入,記住,如果你傳遞給查詢的值作爲參數,來自某種用戶輸入,永遠不會相信它們,並對數據執行一些驗證。 – BigMike 2014-08-28 12:43:51

+1

我知道謝謝。我只是不知道如何使用它們,但現在看起來很簡單。 – Saksoo 2014-08-31 22:55:48