Bug no DELETE do SQL pelo Java

2 respostas
guirodr
Método Excluir
public void excluir(String isbn) {

     String sql="delete from livros where Isbn=?";
    try{ 
            Connection conn=Conexao.getConexao();
            PreparedStatement pst=conn.prepareStatement(sql);
  pst.setString(1,isbn);
  pst.executeUpdate();


    }catch(Exception e){

      System.out.println("Erro excluir: "+e.toString());

    }
    }
Ação do Botão Excluir
private void bttExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                           
        PerLivro perlivro=new PerLivro();
        perlivro.excluir(isbn);
        ((DefaultTableModel) tblLivro.getModel()).removeRow(tblLivro.getSelectedRow());
        tblLivro.setModel(tblLivro.getModel());
              limpar();
    }
Banco de Dados
create database biblioteca --cria banco de dados
go
use biblioteca --usa o banco de dados
go
create table livros( --cria a tabela e atributos
	Titulo varchar(60)not null,
	Autor varchar(60), 
	Editora varchar(60), 
	Genero varchar(60), 
	Isbn varchar(20), 
	Edicao int,
	Tipo varchar(20)) 
go
select * from livros

O problema é o seguinte: Eu adiciono coisas no Banco de Dados, fecho o programa que eu fiz no Java, abro de novo, a JTable carrega os dados do Banco, se eu tentar excluir pelo botão, só exclui os dados da JTable, mas os do banco continuam lá. Ele só exclui do banco os dados que eu coloquei e tentei excluir se fechar o programa. E a ultimo dado ele não exclui.

2 Respostas

jamirdeajr

Guirodr,

O Update está correto, o problema são os campos que você está passando pra ele. Se você verificar aquele array de 7 elementos (linhas) está com a ordem invertida nos campos ‘Edicao’ e ‘Isbn’, então o que no banco de dados é Edicao na Tela está Isbn.
Ao chamar o Excluir esta passando o valor de ‘Edicao’ em vez de ‘Isbn’ para fazer o WHERE do DELETE.

Ficou meio confuso mas acho que você entendeu.

Acho que você deve trocar onde tiver algo assim:

linhas[4] = livro.getIsbn(); linhas[5] = String.valueOf(livro.getEdicao());
por:

linhas[4] = String.valueOf(livro.getEdicao()); linhas[5] = livro.getIsbn();
Que é a ordem que foi construido o ‘grid’

guirodr

Guirodr,

O Update está correto, o problema são os campos que você está passando pra ele. Se você verificar aquele array de 7 elementos (linhas) está com a ordem invertida nos campos ‘Edicao’ e ‘Isbn’, então o que no banco de dados é Edicao na Tela está Isbn.
Ao chamar o Excluir esta passando o valor de ‘Edicao’ em vez de ‘Isbn’ para fazer o WHERE do DELETE.

Ficou meio confuso mas acho que você entendeu.

Acho que você deve trocar onde tiver algo assim:

Consegui, brigadão, você não tem nenhum contato pra que eu possa entrar em contato depois, msn, twitter? Se você quiser passar, and por MP.

Criado 26 de março de 2011
Ultima resposta 26 de mar. de 2011
Respostas 2
Participantes 2