Pessoal, estou tentando criar um programa de cadastro com o banco de dados Mysql, to usando o Assistente SWING do netbeans para fazer a tabela padrão, e implementando classes para ficar com o modelo AbstractTableModel, mas eu não sei como ligar ela ao meu banco de dados, eu to ficando louco ja com essa desgraça
Codigo
public class ModeloTabela extends AbstractTableModel {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USUARIO = "root";
private static final String SENHA = "";
private static final String URL = "jdbc:mysql://localhost:3306/cadastro";
private static Connection pegarConexao() throws Exception {
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(URL, USUARIO, SENHA);
return con;
}
private String[] colunas = {"Usuario", "Senha", "ID"};
private ArrayList<Cadastro> dados = new ArrayList<>();
//Show de bola
public ArrayList<Cadastro> contatosLista() {
try {
Connection con = pegarConexao();
String sql = "SELECT * FROM information";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Cadastro c1;
while(rs.next()) {
c1 = new Cadastro(rs.getString("user"), rs.getString("pass"), rs.getInt("id"));
dados.add(c1);
}
} catch(Exception ex) {
System.err.println("Error: " + ex);
}
return dados;
}
public String getColumnName(int column) {
return colunas[column];
}
public int getRowCount() {
return dados.size();
}
public int getColumnCount() {
return colunas.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void addRow() {
Cadastro c1 = new Cadastro();
ArrayList<Cadastro> lista = contatosLista();
Object[] role = new Object [6];
for (int i = 0; i < lista.size(); i++) {
role[0] = lista.get(i).getUsuario();
role[1] = lista.get(i).getSenha();
role[2] = lista.get(i).getId();
this.dados.add(c1);
}
}
}
No método getPessoas, vc iria realizar a consulta que retornará os dados que serão apresentados na tabela (no exemplo, eu tratei como Pessoa, mas vc altera para apresentar a entidade que vc quiser)
Janela
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
public MainFrame() throws HeadlessException {
super("Minha Janela");
initComponents();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
pack();
setVisible(true);
}
private void initComponents() {
JTable table = new JTable();
table.setModel(new PessoaTableModel(getPessoas()));
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(300, 200));
add(scrollPane);
}
private List<Pessoa> getPessoas() {
List<Pessoa> pessoas = new ArrayList<>();
pessoas.add(new Pessoa(1, "Aaa"));
pessoas.add(new Pessoa(2, "Bbb"));
pessoas.add(new Pessoa(3, "Ccc"));
pessoas.add(new Pessoa(4, "Ddd"));
return pessoas;
}
public static void main(String[] args) {
new MainFrame();
}
}
PessoaTableModel
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class PessoaTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<Pessoa> data = new ArrayList<>();
private String[] colunas = new String[] {"ID", "NOME"};
public PessoaTableModel(List<Pessoa> data) {
super();
this.data = data;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Pessoa value = data.get(rowIndex);
if(value == null) {
return null;
}
switch (columnIndex) {
case 0: return value.getId();
case 1: return value.getNome();
default: return null;
}
}
}
Pessoa
public class Pessoa {
private Integer id;
private String nome;
public Pessoa(Integer id, String nome) {
super();
this.id = id;
this.nome = nome;
}
public final Integer getId() {
return id;
}
public final String getNome() {
return nome;
}
public String toString() {
return "Pessoa [id=" + id + ", nome=" + nome + "]";
}
}
private List getCadastros() {
List pessoas = new ArrayList<>();
try{
Connection con = pegarConexao();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
pessoas.add(new Cadastro(rs.getString(“user”),rs.getString(“pass”),rs.getInt(“id”)));
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null,“Deu merda”);
}
return pessoas;
}
Eu so modifiquei um pouco seu codigo, dai em vez de adicionar as linhas manualmente no codigo, ele vai usar o ResultSet para listar os dados que ja tinha no meu banco…