2017-09-27 81 views
0

我想更新我的數據庫表,但遇到MySQLSyntaxErrorException。我可以知道我該如何解決這個錯誤?Java:檢查與您的MySQL服務器版本對應的手冊,以便在第1行'?VALUES('23')'附近使用正確的語法

謝謝! :)

//Retrieve data from database 
    String queryy = "SELECT agent.agentID, agent.agentEmail, departmentName FROM agent JOIN department ON agentEmail = email"; 
    rs = myStat.executeQuery(queryy); 

//Iterate the result set and get one row at a time 
    while (rs.next()) { 
    int id = rs.getInt("agentID"); 
    email = rs.getString("agentEmail"); 
    String emaill = email; 
    departmentName = rs.getString("departmentName"); 
    String departmentNamee = departmentName; 

    System.out.println("Agent ID = " + id); 
    System.out.println("Department Name = " + departmentNamee); 
    System.out.println("Email = " + emaill + newLine); 

//Update agentID in department table from agent table 
    String departmentUpdateSql = "UPDATE department SET agentID = ?" 
          + "VALUES ('" + id +"')"; 
    myStat.executeUpdate(departmentUpdateSql);' 

這是我得到的錯誤:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?VALUES ('23')' at line 1 
+0

嗯,我還有壽同樣的錯誤:/ – Jane

回答

1

SQL語句update不使用VALUES關鍵字(即用於插入)

使用PreparedStatement如下

String updateTableSQL = "UPDATE department SET agentID = ?" 
PreparedStatement preparedStatement = 
     dbConnection.prepareStatement(updateTableSQL); 
preparedStatement.setInt(1, id); 

// execute update SQL stetement 
preparedStatement.executeUpdate(); 

注意

我猜想,你還需要某種形式的where子句的,否則你將被更新所有記錄

+0

這將設置AGENTID所有表中的行,OP可能不想做的事情。 –

+0

謝謝 - 答案已經更新 –

+0

是的,它的工作原理!非常感謝 :) – Jane

相關問題