Menssagem ao excluir registro no Banco de Dados

4 respostas
fredsilva.sistemas

Olá pessoal! Estou com um problema aqui.
É o seguinte:
Tenho um formulário com uma jTable que realiza uma consulta de produtos na tabela PRODUTOS no PostgreSQL, quando eu seleciono uma linha da jTable e clico no botão Excluir ele exclui o registro no banco de dados. Tudo belezinha, no entanto aparece uma mensagem: "A consulta não retornou nenhum resultado", ao invés de aparecer a mensagem que eu defini, confirmando a exclusão.

Segue abaixo o código da minha classe e do meu formulário:

Classe ProdutoController

public void excluirProduto(Integer prod){
        Conexao database = new Conexao();
        database.open();

        try{
            Statement statement = database.con.createStatement();
            ResultSet resultSet = statement.executeQuery("DELETE FROM \"PRODUTO\" WHERE \"PRO_IDDOOBJETO\" = "+prod+"");            
            JOptionPane.showMessageDialog(null, "Produto Excluido com sucesso!","Aviso de exclusão",JOptionPane.INFORMATION_MESSAGE);
        }
        catch (SQLException e){
            JOptionPane.showMessageDialog(null, e.getMessage(),"Erro",JOptionPane.ERROR_MESSAGE);
        }
        database.close();
    }
Formulário
private void excluirProduto(java.awt.event.MouseEvent evt) {                                
        
            ProdutoController pc = new ProdutoController();
            Integer linhaSelecionada = gridProdutos.getSelectedRow();
            DefaultTableModel modelo = (DefaultTableModel) gridProdutos.getModel();
            modelo.setNumRows(0);
            pc.setProduto((Produto) (listProdutos.get(linhaSelecionada)));//A listProdutos é uma List que armazena a consulta dos produtos no BD
            pc.excluirProduto(pc.getProduto().getId());            
        
}

OBS: Eu tenho uma classe Produto que é instanciado na classe ProdutoController, que por sua vez é instanciada no Formulário.
Agradeço a ajuda!
T+

4 Respostas

zoren

É por que o comando DELETE não tem retorno

Use apenas o execute ou o executeUpdate

fredsilva.sistemas

zoren:
É por que o comando DELETE não tem retorno

Use apenas o execute ou o executeUpdate

Deu certo zoren!
A linha ficou assim;

Valeu pela ajuda!
T :smiley:

fredsilva.sistemas

Aproveitando o tópico eu gostaria de saber como eu faço usando o JOptionPane para ao excluir ele me pergunte se eu tenho certeza que desejo excluir e dê a opção de SIM ou NÃO.
Eu sei que usá-se o showConfirmDialog, mas não sei como executar o método excluirProduto() somente quando clicar em SIM e quando clicar em NÃO ele não faça nada.
Alguém tem uma idéia?
T+

[alterando…]
Descobri:

int rs = JOptionPane.showConfirmDialog(rootPane, "Tem certeza que deseja excluir este produto?", "Confirmação", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if (rs == JOptionPane.YES_OPTION){ pc.setProduto((Produto) (listProdutos.get(linhaSelecionada))); pc.excluirProduto(pc.getProduto().getId()); }

R

if (JOptionPane.showConfirmDialog(...) == JOptionPane.YES_OPTION) { // ... Processamento para o botão SIM ... }

Criado 17 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 4
Participantes 3