java.sql.SQLException: 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 'proddesc='aaaa'prodtamanho='M'prodcor='branca'where idproduro=9' at line 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:929)
Além do que o colega acima citou, eu recomendo que quando houver a necessidade de concatenação de strings, use StringBuffer ou StringBuilder.
Facilita muito a visualização e eu diria que é uma forma muito melhor de lidar com este tipo de String.
Eu costumo usar PrepareStatement porque fica mais fácil de trabalhar e entender o código.
Conection conexao = null;
PrepareStatement pstm = null;
String sqlaltera=“Update produto set prodpreco=?, prodqtd=?, proddesc=?, prodtamanho=?, prodcor=? where idproduro=?”;
try {
conexao = DriverManager.getConnection(baseDeDados, usuario, senha);
pstm = conexao.prepareStatement( sqlaltera);
/* A função abaixo concatena no 1º ? o valor do campo tfprodPreco.getText() que é um Double (eu imagino) /
pstm.setDouble(1,tfprodPreco.getText());
/ Para setar no 2º ? usa-se pstm.setTipoDeDado(2,valor) e assim por diante.
Usar PrepareStatement é melhor porque evita erros como injeção de sql, por exemplo, se uma entrada de texto for copo d’agua sua sql vai “quebar” no ’ de d’agua */
} catch (SQLException ex) {
Logger.getLogger(Vendas.class.getName()).log(Level.SEVERE, null, ex);
}
Eu recomendo que você desenvolva usando o padrão MVC. “conecta.statement.executeUpdate(sqlaltera);” é dificil de fazer, entender e corrigir.