[RESOLVIDO]Problema no UPDATE

7 respostas
Jrmanzini
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...
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);
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

7 Respostas

wendelguedes

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();

Jrmanzini

…então continua o mesmo erro…

rmendes08

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.

Jrmanzini
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.

rmendes08
Jrmanzini:
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.

só de limpar já funcionou ?

Jrmanzini

só…

pmlm

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

Criado 28 de fevereiro de 2012
Ultima resposta 29 de fev. de 2012
Respostas 7
Participantes 4