[RESOLVIDO]Problema no UPDATE

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 ?

só…

O que resolveu foi mesmo tirar a virgula antes do WHERE…