Olá, estou precisando fazer algumas mudanças num projetinho que fiz há algum tempo usando técnicas nada produtivas, como vocês verão…está dando um erro no UPDATE…
[code]String sql = “UPDATE fixo SET descricao = '” + taDesc.getText() + “’,”+ “valor=” + tfValor.getText() +
“,” + “local=’” + tfLocal.getText() + “’,”+ “obs=’” + taObs.getText() + “’,”
+ “situacao=’” + comboSituacao.getSelectedItem() + “’,” + "'Where codigo = " + tfCod.getText();
ca.statement.execute(sql);
[/code]ERRO
*check the manual thats corresponds to your Mysql server for the right sintax to use near "Where codigo=1’ at line 1
Muito Obrigado
Opa, acho que vc colocou uma aspa(’) a mais la do lado da clausula where.
Supondo que teu campo tfCod seja String deveria ficar assim:
String sql = "UPDATE fixo SET descricao = '" + taDesc.getText() + "',"+ "valor=" + tfValor.getText() +
"," + "local='" + tfLocal.getText() + "',"+ "obs='" + taObs.getText() + "',"
+ "situacao='" + comboSituacao.getSelectedItem() + "'," + "Where codigo = '" + tfCod.getText() + "'";
Caso seja int:
String sql = "UPDATE fixo SET descricao = '" + taDesc.getText() + "',"+ "valor=" + tfValor.getText() +
"," + "local='" + tfLocal.getText() + "',"+ "obs='" + taObs.getText() + "',"
+ "situacao='" + comboSituacao.getSelectedItem() + "'," + "Where codigo = " tfCod.getText();
…então continua o mesmo erro…
Porque você não aproveita e limpa o código de uma vez ? Monta a SQL em uma String só, ao invés de concatenação use os placeholders (ex: “codigo = ?”) e passe os parâmetros através de um PreparedStatement. Melhorando a legibilidade do código facilita você a achar o erro.
String sql = "UPDATE fixo SET descricao = ?,valor=?,local=?,obs=?,situacao=? WHERE codigo = ?";
try {
PreparedStatement pstm = (PreparedStatement) new Conexao().getConexao().prepareStatement(sql);
pstm.setString(1, taDesc.getText());
pstm.setDouble(2,Double.parseDouble(tfValor.getText()));
pstm.setString(3, tfLocal.getText());
pstm.setString(4, taObs.getText());
pstm.setString(5, (String)comboSituacao.getSelectedItem());
pstm.setInt(6,Integer.parseInt(tfCod.getText()));
pstm.executeUpdate();
JOptionPane.showMessageDialog(null, "Alterado");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "erro ao tentar alterar o registro" + e);
}
}
Valeu rmendes, estava com preguiça de alterar o projetinho mal feito…obrigado.
[quote=Jrmanzini][code]
String sql = “UPDATE fixo SET descricao = ?,valor=?,local=?,obs=?,situacao=? WHERE codigo = ?”;
try {
PreparedStatement pstm = (PreparedStatement) new Conexao().getConexao().prepareStatement(sql);
pstm.setString(1, taDesc.getText());
pstm.setDouble(2,Double.parseDouble(tfValor.getText()));
pstm.setString(3, tfLocal.getText());
pstm.setString(4, taObs.getText());
pstm.setString(5, (String)comboSituacao.getSelectedItem());
pstm.setInt(6,Integer.parseInt(tfCod.getText()));
pstm.executeUpdate();
JOptionPane.showMessageDialog(null, "Alterado");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "erro ao tentar alterar o registro" + e);
}
}
[/code]
Valeu rmendes, estava com preguiça de alterar o projetinho mal feito…obrigado.[/quote]
só de limpar já funcionou ?
pmlm
Fevereiro 29, 2012, 1:13pm
#8
O que resolveu foi mesmo tirar a virgula antes do WHERE…