Listar tabela do bd (mysql) em uma tabela java

2 respostas Resolvido
programaçãomysql
J

Para começar, olá a todos!

sou iniciantes em java e em meus estudos me deparei com um certo problema a listar dados do db em uma tabela java.

meu codigo está assim:

Classe contato (id, nome, telefone, email);

ContatoDAO

package testandoclasses;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;
public class ContatoDAO {

private Connection con;

PreparedStatement stmt;

ResultSet rs;

public ContatoDAO(){

con = new FabricaDeConexoes().getConnection();

}
public ArrayList listarContatos() throws SQLException{
    String sql = "select * from contato";
    stmt = con.prepareStatement(sql);
    rs = stmt.executeQuery();
    
    ArrayList<Contato> contatos = new ArrayList<Contato>();
    
    if(rs.next()){
        Contato contato = new Contato();
        contato.setId(rs.getInt("id"));
        contato.setNome(rs.getString("nome"));
        contato.setTelefone(rs.getString("telefone"));
        contato.setEmail(rs.getString("email"));
        contatos.add(contato);
        
    }
    return contatos;
}

}

================================

e minha interface tem um metodo  mostrarTabela

Construtor(

public ListarContatos() {

initComponents();

iniciarDB() ;

montarTabela();

}
private void iniciarDB() {

contatoDao = new ContatoDAO();

}

)

//omitidos

private ContatoDAO contatoDao;
private Contato contato;

private void montarTabela(){
    try {
        ArrayList<Contato> contatos = contatoDao.listarContatos();
        int linha = 0;
        for(Contato contato : contatos){
           int id =  contato.getId();
           String nome = contato.getNome();
           String telefone = contato.getTelefone();
           String email = contato.getEmail();
           
           tblContatos.getModel().setValueAt(id, linha, 0);
           tblContatos.getModel().setValueAt(nome, linha, 1);
           tblContatos.getModel().setValueAt(telefone, linha, 2);
           tblContatos.getModel().setValueAt(email, linha, 3);
           linha++;
        }          
        
    } catch (SQLException ex) {
        Logger.getLogger(ListarContatos.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

Não estou tendo muito problema para inserir , ou excluir no db, mas trazer para a tela…

com esse codigo está dando o erro

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at testandoclasses.ListarContatos.montarTabela(ListarContatos.java:155)

at testandoclasses.ListarContatos.(ListarContatos.java:24)

at testandoclasses.ListarContatos$2.run(ListarContatos.java:135)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

================================

então, o que mais preciso colocar nesse código, ou onde devo concertar, alguém pode ajudar?

já agradeço desde o começo…!

2 Respostas

J

Acredito que falta você inserir uma linha na JTable para depois passar os valores para cada coluna da linha, procure sobre o JTable.addRow()

P
Solucao aceita

eu acho que vc não tem uma instancia do seu dao. ai o atributo esta nulo e se vc tentar chamar qq metodo isso vai explodir

Criado 23 de outubro de 2018
Ultima resposta 23 de out. de 2018
Respostas 2
Participantes 3