Já li muitas e muitas matérias aqui no fórum relacionadas ao JTable mas ainda assim n consegui entender aquase nada que me permitisse criar minha própria aplicação, no NetBeans, utilizando essa componente, associado a uma conexão com um bd.
Na verdade meu desejo é pre-encher um JTable com o resultado de uma consulta ao BD.
Segue meu código:
Vector cabecalho = new Vector();
Vector linhas = new Vector();
try{
String dsn = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/xxx/xxx.mdb";
String usuario = "";
String senha = "";
String sql = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con = DriverManager.getConnection(dsn,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Cadastro ORDER BY ESTACAO");
rs.next();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(rs.getString("ESTACAO"));
}
while (rs.next());
validate();
st.close();
} catch (SQLException sqlex){
}
Entendo que há muitas coisas erradas, por isso solicito alguma ajuda de vocês nessa questão.
Alguém pode me ajudar a desenvolver isso no NetBeans?
Cara, dá uma fuçada em DefaullTableModel, é facil e simples de usar.
Veja só:
DefaulTableModel modelo = new DefaultTableModel(new String{"campo1","campo2","campo3"};
//dá uma explorada nos metodos da instância modelo
jTable.setModel(modelo); // atribui para o jTable.
Para colocar valores segue:
DefaultTableModel modelo = (DefaulTableModel) jTable.getModel();
jTable.removeAll();
for (VO vo : listVo) {
modelo.addRow(new String[]{vo.getCampo1(),vo.getCampo2(),vo.getCampo3()});
}
Se vc se aprofundar vai poder até fazer algo que faça a JTable receber valores diretamente do bean, eu fiz isso na minha aplicação e ficou jóia.
Bom ai está o q me pediu alguma dúvida é só falar.
[code]DefaultTableModel modelo = (DefaultTableModel)suaTabela.getModel();//obtem o tablemodel da tabela
//Limpando os campos da tabela antes de inserir os dados da consulta
int i = 0;
while (modelo.getRowCount() > 0){
modelo.removeRow(i);
}
Connection con;
try {
con = ConnectionFactory.getConnection(); //ConnectionFactory é uma classe que fabrica conexções (tem que criá-la)
PreparedStatement ps = con.prepareStatement("SELECT * FROM suaTabela WHERE seuCampo = ? ");
ps.setString(1, (String) seuJComboBox.getSelectedItem());
ResultSet rs = ps.executeQuery();
while (rs.next()){
Object[] novaLinha = new Object[4];//cria um array de objetos com a quantidade igual as colunas da table (nesse caso 4)
novaLinha[0] = rs.getString("id");
novaLinha[1] = rs.getString("nome");
novaLinha[2] = rs.getString("login");
novaLinha[3] = rs.getString("senha");
modelo.addRow( novaLinha );//adiciona uma nova linha ao tablemodel da tabela
}
con.close();
}catch (SQLException e){
e.printStackTrace();
} [/code]
Pra esse exemplo tem que criar a classe ConnectionFactory:
[quote=jimjr_ivan]Cara, dá uma fuçada em DefaullTableModel, é facil e simples de usar.
Veja só:
DefaulTableModel modelo = new DefaultTableModel(new String{"campo1","campo2","campo3"};
//dá uma explorada nos metodos da instância modelo
jTable.setModel(modelo); // atribui para o jTable.
Para colocar valores segue:
DefaultTableModel modelo = (DefaulTableModel) jTable.getModel();
jTable.removeAll();
for (VO vo : listVo) {
modelo.addRow(new String[]{vo.getCampo1(),vo.getCampo2(),vo.getCampo3()});
}
[quote=Wesley Marra]Olá,
Veja se esse exemplo o ajuda…
[code]DefaultTableModel modelo = (DefaultTableModel)suaTabela.getModel();//obtem o tablemodel da tabela
//Limpando os campos da tabela antes de inserir os dados da consulta
int i = 0;
while (modelo.getRowCount() > 0){
modelo.removeRow(i);
}
Connection con;
try {
con = ConnectionFactory.getConnection(); //ConnectionFactory é uma classe que fabrica conexções (tem que criá-la)
PreparedStatement ps = con.prepareStatement("SELECT * FROM suaTabela WHERE seuCampo = ? ");
ps.setString(1, (String) seuJComboBox.getSelectedItem());
ResultSet rs = ps.executeQuery();
while (rs.next()){
Object[] novaLinha = new Object[4];//cria um array de objetos com a quantidade igual as colunas da table (nesse caso 4)
novaLinha[0] = rs.getString("id");
novaLinha[1] = rs.getString("nome");
novaLinha[2] = rs.getString("login");
novaLinha[3] = rs.getString("senha");
modelo.addRow( novaLinha );//adiciona uma nova linha ao tablemodel da tabela
}
con.close();
}catch (SQLException e){
e.printStackTrace();
} [/code]
Pra esse exemplo tem que criar a classe ConnectionFactory: