Erro ao excluir registo do MySQL

2 respostas
javamysql
Alyesson

Estou com dificuldades de excluir registros no MySQL, estou com o seguinte código:

try {

            String sql = "Select * from cadastro_produto Where numero_serie = " + numero_serie.getText();
            conecta_cliente.executeSQL(sql);
            conecta_cliente.resultset.first();
            String nome = "Deseja realmente excluir o produto : " +conecta_cliente.resultset.getString("nome") +  " ?";
            int opcao_escolhida = JOptionPane.showConfirmDialog(null, nome, "Removendo Produto", JOptionPane.YES_NO_OPTION);
            if (opcao_escolhida == JOptionPane.YES_OPTION) {
                sql = "DELETE FROM cadastro_produto Where numero_serie = " + numero_serie.getText();
                int conseguiu_excluir = conecta_cliente.statement.executeUpdate(sql);
                if (conseguiu_excluir == 1) {
                    JOptionPane.showMessageDialog(null, "Registro apagado com sucesso", "Registo Apagado", JOptionPane.INFORMATION_MESSAGE);
                    conecta_cliente.executeSQL("Select * from cadastro_produto");
                    //conecta_cliente.resultset.first();
                    //mostrar_dados();
                }
            } else {
                conecta_cliente.executeSQL("Select * from cadastro_produto");
                conecta_cliente.resultset.first();
                mostrar_dados();
            }
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null, "Erro ao tentar excluir registro, tente novamente" + erro);
      }

Quando clico para rodar, dá o seguinte erro:

Não foi possível executar o comando sql,

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column “BRG425CH9v” in ‘where clause’ o sql informado foi Select * from cadastro_produto where numero_serie = BRG425CH9V

Onde:

  • cadastro_produto é o nome da tabela
  • numero_serie é uma coluna da tabela e está como varchar (250)

No Netbeans o código está correto, não são mostrados erros.

2 Respostas

peczenyj

Ola

o seu codigo esta muito estranho. vc faz coisas como executar sql e pegar o primeiro resultado do resultset para nada, ou para algum motivo obscuro. falta uma orientação a objetos ai.

vejamos, concatenar strings para gerar SQL é, para mim, motivo para expulsar o meu filho de casa.

altere o seu codigo para usar Prepared Statement ( na verdade, vc deveria preparar para usar um DAO, mas talvez vc esteja fazendo baby steps ).

talvez se o numero de serie é um VARCHAR, vc deva criar um sql com o valor entre aspas. mas o prepared statement vai preparar a sua query para executar com maior segurança

Alyesson

então, eu to achando que é o int em :slight_smile:

int opcao_escolhida = JOptionPane.showConfirmDialog(null, nome, Removendo Produto, JOptionPane.YES_NO_OPTION);

if (opcao_escolhida == JOptionPane.YES_OPTION) {

sql = "DELETE FROM cadastro_produto Where numero_serie = " + numero_serie.getText();

int conseguiu_excluir = conecta_cliente.statement.executeUpdate(sql);

Por que mesmo sendo varchar, se eu colocar só número no campo “número de série” ele consegue apagar, se eu colocar letras, ele grava, porém não apaga nem altera…

Como posso reescrever esse código com uma variável “char”. ?

Criado 4 de setembro de 2016
Ultima resposta 10 de set. de 2016
Respostas 2
Participantes 2