2013-03-27 85 views
0

我有一個SQL查詢,我從MYSQL複製,我刪除了引號,但它似乎並沒有工作。SQL語法錯誤,但從MYSQL複製

conn = connect(); 
      selectStatement = "UPDATE student SET Item ? = ?, Type ? = ? WHERE ID = ?"; 
      System.out.println(selectStatement); 
      if(conn != null) 
      { 
       preparedStatement = conn.prepareStatement(selectStatement);  
       preparedStatement.setString(2, id); 
       preparedStatement.setInt(1, location); 
       preparedStatement.setInt(3, location); 
       preparedStatement.setString(4, type); 
       preparedStatement.setString(5, userId); 
       preparedStatement.executeUpdate();   
       return true; 

我不知道爲什麼它不作爲引發的異常工作,這是

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在'1 ='sad'附近使用正確的語法,類型1 ='asd'WHERE ID ='student1''在第1行

+0

SQL語句應該是:selectStatement =「UPDATE student SET Item =?,Type =?WHERE ID =?」; – 2013-03-27 04:39:54

+0

你可以告訴學生表中的列名是什麼? – 2013-03-27 04:41:02

回答

1

最後這個工作。

  conn = connect(); 
      selectStatement = "UPDATE student SET `Item " + location + "` = ? , `Type " + location + "` = ? WHERE ID = ?"; 
      System.out.println(selectStatement); 
      if(conn != null) 
      { 
       preparedStatement = conn.prepareStatement(selectStatement);  
       preparedStatement.setString(1, id); 
       preparedStatement.setString(2, type); 
       preparedStatement.setString(3, userId); 
       preparedStatement.executeUpdate();   
       return true; 
      } 
+0

大聲笑沒關係。這太奇怪了。一般來說,無論如何在列名中都有空格是一個壞主意。 – 2013-03-27 05:01:29

+0

請告訴我,'location'和'type'永遠不會被用戶輸入。我可以輸入'= 1的位置,其中0;輟學生; --' – 2013-03-27 05:02:58