Bug no DELETE do SQL pelo Java

Método Excluir

[code] 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());

}
}[/code]

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.

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’

[quote]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: [/quote]

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.