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.
Abraços.
A
adrianoandrade
Tem alguns Erros no código.
Note que nem sempre o SQLException vai mostrar todos os erros de sintaxe.
1- Falta vírgulas
2- Tem duas " aspas" no final da query.
String sqlaltera="Update produto set prodpreco="+tfprodPreco.getText()+"prodqtd="+tfprodQtd.getText()+" proddesc='"+areaprodDesc.getText()+"'prodtamanho='"+comboprodTamanho.getSelectedItem().toString()+"'prodcor='"+tfprodCor.getText()+"'where idproduro="+codProdAltera+"";
try {
conecta.statement.executeUpdate(sqlaltera);
} catch (SQLException ex) {
Logger.getLogger(Vendas.class.getName()).log(Level.SEVERE, null, ex);
}
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.