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:
Vectorcabecalho=newVector();Vectorlinhas=newVector();try{Stringdsn="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/xxx/xxx.mdb";Stringusuario="";Stringsenha="";Stringsql="";Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();Connectioncon=DriverManager.getConnection(dsn,usuario,senha);Statementst=con.createStatement();ResultSetrs=st.executeQuery("SELECT * FROM Cadastro ORDER BY ESTACAO");rs.next();ResultSetMetaDatarsmd=rs.getMetaData();for(inti=1;i<=rsmd.getColumnCount();++i)cabecalho.addElement(rsmd.getColumnName(i));do{linhas.addElement(rs.getString("ESTACAO"));}while(rs.next());validate();st.close();}catch(SQLExceptionsqlex){}
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ó:
DefaulTableModelmodelo=newDefaultTableModel(newString{"campo1","campo2","campo3"};//dá uma explorada nos metodos da instância modelojTable.setModel(modelo);// atribui para o jTable.
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.
wamarra
Olá,
Veja se esse exemplo o ajuda...
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();
}
Pra esse exemplo tem que criar a classe ConnectionFactory:
Como percebeu estou utilizando MySQL, caso seja outro gerenciador é só fazer as adaptações, Ok!?
Espero ter ajudado
T+
tandrade
Muito Obrigado.
Vou testar esses dois exemplos e posto os resultados
tandrade
jimjr_ivan:
Cara, dá uma fuçada em DefaullTableModel, é facil e simples de usar.
Veja só:
DefaulTableModelmodelo=newDefaultTableModel(newString{"campo1","campo2","campo3"};//dá uma explorada nos metodos da instância modelojTable.setModel(modelo);// atribui para o jTable.
try{Stringdsn="jdbc:odbc:Driver={MicrosoftAccessDriver(*.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(); PreparedStatement ps = con.prepareStatement("SELECT*FROMOBJWHEREESTACAO=?"); ps.setString(1, tf_busca.getText()); ResultSet rs = ps.executeQuery(); DefaultTableModel modelo = (DefaultTableModel)tabela.getModel(); int i = 0; while (modelo.getRowCount() > 0){ modelo.removeRow(i); } while (rs.next()){ String[] novaLinha = new String[4]; novaLinha[0] = rs.getString("NOME"); novaLinha[1] = rs.getString("IDADE"); novaLinha[2] = rs.getString("CONF"); novaLinha[3] = rs.getString("PPL");modelo.addRow(novaLinha);//adicionaumanovalinhaaotablemodeldatabela}st.close();con.close();}catch(Exceptione){e.printStackTrace();}
:D:D
B
bocabr
Wesley Marra:
Olá,
Veja se esse exemplo o ajuda...
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();
}
Pra esse exemplo tem que criar a classe ConnectionFactory: