2012-10-29 8 views
2

J'essaie juste d'utiliser une mise à jour dans mon application, mais je ne peux pas. A la console, cette commande mysql fonctionne, mais ici, ne fonctionne pas.MySQL Java Update Syntaxe

Eh bien, je l'utilise dans mon programme:

conexao = poolMySQL.connect(); 
    final String sql = "UPDATE professor SET codlocal = ? WHERE codprof = ?"; 

    pstmt = conexao.prepareStatement(sql); 


    pstmt.setInt(1, local); 
    pstmt.setInt(2, id); 
    try { 
     pstmt.executeUpdate(sql); 
    } catch (SQLException ex) { 
     Logger.getLogger(ProfessorDAO.class.getName()).log(Level.SEVERE, null, ex); 
    } 

Juste rappeler, codlocal est une clé étrangère d'une autre table, du nom Localidade. J'ai vu quelques exemples de rejoindre, mais je ne peux pas imaginer comment cela peut fonctionner pour moi.

Et je reçois ceci:

Grave: null 
    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 '? WHERE codprof = ?' at line 1 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    at com.mysql.jdbc.Util.getInstance(Util.java:384) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562) 
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664) 
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583) 
    at DAO.ProfessorDAO.atualizaLocalidade(ProfessorDAO.java:153) 
    at DAO.Main.main(Main.java:23) 

Alors, que puis-je faire?

Répondre

5

Vous devez utiliser pstmt.executeUpdate(); à la place de pstmt.executeUpdate (sql);

+0

wow, c'était embarrassant. Merci mec. –

+0

Ça m'arrive tout le temps ... – thedayofcondor