JTable e Banco de Dados!

2 respostas
D

Muito bem! Já fucei um bocado aqui, mas não tive sucesso.
Meu problema é o seguinte.
Tenho um programa que em um JFrame que é onde o administrador apagar os usuários. Nessa JFrame tem uma JTable que é onde aparece os usuários para ele.
Apagar os dados da tabela já esta tudo ok usando o comando

((DefaultTableModel) JTDadosUsuarios.getModel()).removeRow(JTDadosUsuarios.getSelectedRow());

Esta funcionado muito bem. Só que esse comando é simplesmente ilustrativo, pois no banco mesmo não acontece nada, isso eu já sabia.
Mas então quando fui fazer para apagar no banco começou meu problema.

Apagar de um JTextField ou JLabel é fácil é so usar da seguinte forma

String sqlApagarTextFild = "delete from notificacao where idsolicitacao like '"+JLNumeroRequisicao.getText()+"'";

Mas eu não tenho ideia de como fazer isso com tabela.
Tipo apagar no banco de dados o valor de um campo de uma row selecionada.

Já fiz ate coisas bizarras como esta aqui

String sqlApagarJtable = "delete from usuarios where idusuarios like "JTDadosUsuarios.getModel().getValueAt(JTDadosUsuarios.getSelectedRow(), 1)+"   ?";

2 Respostas

C

Dinho,

Segue um exemplo para manipular dados na JTable, espero que te ajude.

public class Usuario {
    private Long idUsuario;
    private String nomeUsuario;
    private String senhaUsuario; 

    // Métodos acessores omitidos
}

public class UsuarioTableModel extends AbstractTableModel {
    private List<Usuario> usuarios;

    public UsuarioTableModel(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Usuario usuario = (Usuario) usuarios.get(rowIndex);
        if (usuario != null) {
            switch (columnIndex) {
            case 0:
                return usuario.getIdUsuario();
            case 1:
                return usuario.getNome();
            }
        }
        return null;
    }

    public int getRowCount() {
        if (usuarios != null) {
            return this.usuarios.size();
        }
        return 0;
    }

    public int getColumnCount() {
        return 2;
    }

    public Usuario getUsuario(int row) {
        if (row >= 0) {
            return (Usuario) this.usuarios.get(row);
        }
        return null;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
        case 0:
            return "ID";
        case 1:
            return "Nome";
        }
        return "";
    }

    public void removerUsuario(Usuario usuario) {
        this.usuarios.remove(usuario);
    }
}

// Para carregar sua lista de usuário no modelo e visualizar este modelo no JTable.
List<Usuario> usuarios = UsuarioDAO.findAllUsuarios();
UsuarioTableModel model = new UsuarioTableModel(usuarios);
JTable tableUsuarios = new JTable(model);


// Remover um usuário selecionado na tabela.
Usuario usuario = model.getUsuario(tableUsuarios.getSelectedRow());
model.removerUsuario(usuario);
UsuarioDAO.remove(usuario);
tableUsuarios.updateUI();

@braços,

D

Muito obrigado cellss pelo codigo.
Eu já resolvi da seguinte forma com uma ajuda do usuário GustavoTavone de outro forum. Mas esse seu codigo foi muito util para mim, pois nele posso ver melhor a manipulação das rows. Já esta aqui no meus favoritos para terminar esse meu estudo de JTables. Muito obrigado.

int i = jTable1.getSelectedRow();  
 String codigo = ""+jTable1.getValueAt(i,0);  
   
   
 String sqldelete =  "delete from usuarios where " +  
                            "idusuarios = '"+codigo+"' ";
Criado 5 de novembro de 2007
Ultima resposta 6 de nov. de 2007
Respostas 2
Participantes 2