Preencher automaticamente uma coluna na jTable quando preencher a outra!

4 respostas Resolvido
C

Pessoal, boa tarde.

tenho uma tabela no banco de dados chamada: usuario que contém 2 colunas: nomeusuario e telefone, com 2 linhas:

nomeusuario | telefone
teste | 123
teste2 | 456

tenho 1 jTable com 2 colunas com os mesmos nomes da tabela do banco.

estou tentando fazer o seguinte: assim que eu digitar o nome teste na primeira linha da primeira coluna no jTable, eu quero que o sistema me traga de forma automática na coluna 2 (telefone) a informação que está no banco de dados, exemplo: se eu digitar teste, ele me traz 123, se eu digitar teste2 ele me traz 456, e assim por diante…

agradeço desde já a ajuda e a atenção de todos.

4 Respostas

C

Alguém pode ajudar pessoal? não estou conseguindo mesmo

rodriguesabner

o jeito mais fácil é preencher direto com o banco de dados:

private void preencherTabela(){
    String SQL = "SELECT * FROM table WHERE algumaCoisa='outra coisa'";
    ........
}

Mas isso vai gerar uma certa lentidão no seu projeto, então tenta isso:

https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting

C

Opa, valew por responder orochimaru eu fiz a pesquisa no banco e estou tentando implementar na minha view, segue abaixo, porém ainda está faltando alguma coisa:

DAO
public List SelectTelefoneJTableNewDAO(String usuariobd){

List<LinhaPedMod> telefones = new ArrayList<>();
    try{
    con = ConexDAO.getConnectionDAO();
    
    String query = ("SELECT telefone FROM usuariot WHERE usuario = ?");
    stmt = con.prepareStatement(query);
    stmt.setString(1, "%"+usuariobd+"%");
    rs = stmt.executeQuery();
    
     while (rs.next()){
         
         LinhaPedMod telefone = new LinhaPedMod();
         
         telefone.setTelefone(rs.getString(2));
         telefones.add(telefone);
     }
}
catch(SQLException ex){
    JOptionPane.showMessageDialog(null,"erro ao trazer telefone" + ex.getMessage());
}
    return telefones ;
}
VIEW

public void SelectTelefoneJTableVis(){

int linha = jTableTesteJF.getSelectedRow();

String usuariobd = String.valueOf(jTableTesteJF.getValueAt(linha,1));

List resultsql = lPDao.SelectTelefoneJTableNewDAO(usuariobd);

jTableTesteJF.setValueAt(resultsql, linha, 2);
C
Solucao aceita

Pessoal, após muito pesquisar e tentar, consegui graças a DEUS.

agradeço a todos que tentaram ajudar, segue abaixo como consegui…

DAO
public String SelectTelefoneJTableNewDAO(String usuariobd){

try{
    con = ConexDAO.getConnectionDAO();
    
    String query = ("SELECT telefone FROM usuariot WHERE usuario LIKE ?");
    stmt = con.prepareStatement(query);
    stmt.setString(1, "%"+usuariobd+"%");
    rs = stmt.executeQuery();
    while (rs.next()){
         
        usuariobd = (rs.getString("telefone"));
        
     }
}
catch(SQLException ex){
    JOptionPane.showMessageDialog(null,"erro ao trazer telefone" + ex.getMessage());
}
    return usuariobd;
}

VIEW

public void SelectTelefoneJTableVis(){

int linha = jTableTesteJF.getSelectedRow();

String usuariobd = String.valueOf(jTableTesteJF.getValueAt(linha,1));

String resultsql = lPDao.SelectTelefoneJTableNewDAO(usuariobd);

jTableTesteJF.setValueAt(resultsql, linha, 2);

espero ter ajudado aos demais…

Criado 27 de julho de 2020
Ultima resposta 30 de jul. de 2020
Respostas 4
Participantes 2