[RESOLVIDO] Erro com a criação da tabela

Boa noite galera, eu usava DefaultTableModel, mas me disseram que é errado então fui atras do método correto que é criando a tabela por ArrayList. Só que eu tô tendo um problema que não acho solução quando vou executar a aplicação ele não retorna do valores do banco de dados.

public class controlTable extends AbstractTableModel {

private ArrayList linhas = null;
private String[] colunas = null;

public controlTable(ArrayList lin, String[] col) {

    setLinhas(lin);
    setColunas(col);
}

/**
 * @return the linhas
 */
public ArrayList getLinhas() {
    return linhas;
}

/**
 * @param linhas the linhas to set
 */
public void setLinhas(ArrayList linhas) {
    this.linhas = linhas;
}

/**
 * @return the colunas
 */
public String[] getColunas() {
    return colunas;
}

/**
 * @param colunas the colunas to set
 */
public void setColunas(String[] colunas) {
    this.colunas = colunas;
}

public int getColumnCount(){
    return colunas.length;        
}
public int getRowCount(){
    return linhas.size();
}
public String getColumnName(int numCol){
    return colunas[numCol];
}
public Object getValueAt(int numLin, int numCol){
    Object[] linhas = (Object[])getLinhas().get(numLin);
    return linhas[numCol];
}

}

public void readTableCompra(String Sql) {
ArrayList dados = new ArrayList();
String[] colunas = new String[]{“ID”, “Nome”, “Preço”, “Quantidade Atual”, “Quantidade Venda”, “Data”, “Parcial”};
conexao.conecta();
conexao.executaSQL(Sql);

    try {
        conexao.rs.first();
        do {
            dados.add(new Object[]{
                conexao.rs.getString("idVenda"),
                conexao.rs.getString("nome"),
                conexao.rs.getString("venda"),
                conexao.rs.getString("quantAtual"),
                conexao.rs.getString("quantVenda"),
                conexao.rs.getString("diaVenda"),
                conexao.rs.getString("total")});

        } while (conexao.rs.next());
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(rootPane, "Erro ao gerar a tabela compra! \n" + ex.getMessage());
    }
    controlTable tabela = new controlTable(dados, colunas);
    
    tabelaCompra.setModel(tabela);
    tabelaCompra.getColumnModel().getColumn(0).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(0).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(1).setPreferredWidth(302);
    tabelaCompra.getColumnModel().getColumn(1).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(2).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(2).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(3).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(3).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(4).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(4).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(5).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(5).setResizable(false);
    tabelaCompra.getColumnModel().getColumn(6).setPreferredWidth(120);
    tabelaCompra.getColumnModel().getColumn(6).setResizable(false);
    tabelaCompra.getTableHeader().setReorderingAllowed(false);
    tabelaCompra.setAutoResizeMode(tabelaCompra.AUTO_RESIZE_OFF);
    //tabelaCompra.setSelectionModel(ListSelectionModel.SINGLE_SELECTION);
    
    conexao.desconecta();
}

Essa é o método de ler e criar a tabela. Chamei o método no initComponents assim:

readTableCompra(“select * from historico order by nome”);

Alguém sabe me dizer onde está errado?

Tem mta coisa errada ai.

Que???

Isto é um arraylist

ou isto. APENAS

A ideia de vc implementar seu próprio tableModel é para fazer valer a Orientação a Objetos que não há no Default, mto devido a linha de dados dele ser um vetor, logo, se vc tbm está usando vetor para adicionar dados à sua tabela, acabou de reimplementar o DefaultTableModel. Recomendo usar o default ou rever a forma que vc implementou seu tableModel.

Primeiramente vc precisa descobrir onde está seu problema de exibição, se é no model ou na busca.
Procure utilizar tbm o conceito de DAO onde parte que acessa o banco fica separada da tela. Assim a tela n define a sql, sem onde a sql é executada pode mexer com a tela.

Oi Rodrigo, na verdade eu não entendo nada desse método de arraylist, acompanhei por uma vídeo aula ele criando essa tabela, bom pra ele funcionou exatamente desse jeito. Teria como tu ser mais especifico ou me dar algum tipo de tutorial para eu entender isso aqui? Por isso sempre uso DefaultTableModel nunca dá problema e é bem simples.

1 curtida