Bom dia galera, estou com um probleminha no código java em que faz a alteração de um contato no banco de dados. Abaixo segue minhas implementações:
Método altera no DAO:
public void altera (Contato contato){
String sql = “update contatos set id=?, nome=?, email=?, endereco=?, dataNascimento=?, where id=?”;
try{
PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
stmt.setLong(5, contato.getId());
stmt.setLong(6, contato.getId());
stmt.execute();
stmt.close();
} catch (SQLException e){
throw new RuntimeException(e);
}
Código main:
public class TestaAltera {
public static void main(String[] args) throws SQLException {
//pronto para gravar
Contato contato = new Contato();
contato.setNome("Edyfran");
contato.setEmail("[email removido]");
contato.setEndereco("R. Tenente Alvino");
contato.setDataNascimento(Calendar.getInstance());
contato.setId(1);
//grave essa conexão
ContatoDao dao = new ContatoDao();
//método elegante
dao.altera(contato);
System.out.println("Alterado");
}
}
Erro:
Exception in thread “main” java.lang.RuntimeException: 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 id=1’ at line 1
at br.com.caelum.jdbc.dao.ContatoDao.altera(ContatoDao.java:95)
at br.com.caelum.jdbc.teste.TestaAltera.main(TestaAltera.java:25)
Caused by: 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 id=1’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)
at br.com.caelum.jdbc.dao.ContatoDao.altera(ContatoDao.java:91)
… 1 more