2013-04-04 2 views
4

Этот код имеет некоторую простую синтаксическую ошибку. Я боролся с ним часами, и я сдаюсь. Вы можете это заметить? Держу пари, это легко. Благодаря!Java mysql, Простое обновление с PreparedStatement имеет синтаксическую ошибку

Когда я обновляю только первое имя Джона, никаких проблем. Когда я пытаюсь обновить прокомментированную строку для последнего имени, синтаксическая ошибка.

import java.sql.*; 

public class UpdateTester { 

    public static void main(String[] args) { 

     try { 

     Connect connect = new Connect(); 
     Connection connection = connect.getConnection(); 

     try { 

      String sql  = "UPDATE student SET firstName = ? " 
        + " WHERE studentID = 456987"; 

      //String sql  = "UPDATE student SET firstName = ? " 
      //  + " Set lastName = ?, " 
      //  + " WHERE studentID = 456987"; 

      PreparedStatement pst = connection.prepareStatement(sql); 
      pst.setString(1, "John"); 

      //pst.setString(2, "Johnson"); 

      pst.executeUpdate(); 
      System.out.println("Updated Successfully!"); 

      connection.close(); 

     } catch (SQLException e) { 
      System.out.println("Exception 1!"); 
      e.printStackTrace(); 
     } 
     } catch (Exception e) { 
     System.out.println("Exception 2!"); 
     e.printStackTrace(); 
     } 
    } 
} 

Имена колонок верны. Правильно обновляется только последнее имя на его собственной работе. Ошибка обновления с синтаксической ошибкой при попытке выполнить оба действия, как в пронумерованных строках.

+2

я думаю, что проблема является «» вы должны поставить его перед Lastname и удалить второй набор – Smartoop

ответ

10

3 вопроса:

  • набор ключевых слов может появиться только один раз в операторе UPDATE:
  • запятая перед вторым параметром пропавшие
  • Ненужная запятую перед где п

скорректированного синтаксиса :

String sql  = "UPDATE student SET firstName = ?, " 
       + " lastName = ? " 
       + " WHERE studentID = 456987"; 

SQL Reference

+0

[ссылка SQL] (http://www.w3schools.com/sql/sql_update.asp) – Aubin

+0

Лучше [ссылка] (http://dev.mysql.com/doc/refman/5.6/en/update.html), imho. – jlordo