2013-03-08 49 views
-1
String insert = "UPDATE PPN_WORKFLOW SET P1_F_Date = ?, SET P1_Completed = ?, SET C2_S_Date = ? WHERE ERF_No = ?"; 
      stmt = conn.prepareStatement(insert); 
      stmt.setDate(1, date); 
      stmt.setInt(2, 1); 
      stmt.setDate(3, date); 
      stmt.setInt(4, erf_no); 
      stmt.executeUpdate(); 

我想更新的声明,但我recieving这个错误什么毛病我UPDATE SQL语句的Java

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. 
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) 
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) 
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3148) 
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:215) 
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:137) 
at Mails.MailtoERF.check(MailtoERF.java:60) 
at Mails.MailtoERF.main(MailtoERF.java:122) 

回答

2

你不需要SET为每列:

MySQL UPDATE SYNTAX

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

String insert = "UPDATE PPN_WORKFLOW SET P1_F_Date = ?, P1_Completed = ?, 
C2_S_Date = ? WHERE ERF_No = ?"; 
3

你不能这样设置,你需要改变语法。一次SET足够

UPDATE PPN_WORKFLOW SET P1_F_Date = ?, P1_Completed = ?..... where condition 
3

你有一个SET每个列名,您只需用逗号分隔的列和使用SET只有一次,看语法here

UPDATE table_name 
SET column1=value, column2=value2,... 
WHERE some_column=some_value 
0

您的SQL更新语句的语法wrong.Do把'SET' for each column in the query, you only do it at the first column

改变它

String insert = "UPDATE PPN_WORKFLOW SET P1_F_Date = ?, P1_Completed = ?, C2_S_Date = ? WHERE ERF_No = ?"; 
      stmt = conn.prepareStatement(insert); 
      stmt.setDate(1, date); 
      stmt.setInt(2, 1); 
      stmt.setDate(3, date); 
      stmt.setInt(4, erf_no); 
      stmt.executeUpdate(); 

继承人syntax for you reference