2017-10-01 61 views
0

有人可以告訴我什麼是我的查詢錯誤。 我有文本框來更新佔用者名稱,但它不起作用,只有狀態起作用。Java的MySQL - 如何從文本框更新數據庫

String gOccupied = "Occupied" ; 
String query = "UPDATE `rooms` SET `occupantname` = '"+txtFirstNames.getText()+"' , `status`='"+gOccupied+"' WHERE roomnumber = " +CBRoomNumber.getSelectedItem(); 

executeSQlquery(query,""+" Updated"); 
+0

你得到任何錯誤?如果是的話請在上面更新。 –

+0

我沒有任何錯誤。這只是狀態正在更新,但居民名稱不更新 – Francis

+0

嗯,那麼我懷疑「txtFirstNames.getText()」的值沒有變化,請調試它,你可以找到它爲什麼會發生。 –

回答

0

有人能告訴我什麼是錯的我的查詢。我有文本框 更新佔用者名稱,但它不起作用,唯一狀態的作品。

不要使用直接的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

相關問題