Pessoal possuo uma tabela no banco chamada ocorrencia, com os campos:idocorrencia,descricao,data e servico.
Preciso criar um metodo ou uma outra maneira de acessar todos os dados na tabela… para preencher minha JTable, estou usando mvc
Não sei se posso fazer o metodo direto na view, pois estou usando JFrame, ou se tenho que criar o metodo no meu pacote DAO.
se voce esta usando MVC nao pode criar metodo dentro do view…
vai ter que criar um metodo dentro da DAO e chama ele pela sua GUI(view)
exemplo
publicDefaultTableModelmetodo()throwsException{DefaultTableModeldtm=newDefaultTableModel(){publicbooleanisCellEditable(introw,intcolumn){returnfalse;}};sql="select * from sua_tabela";ps=conectar().prepareStatement(sql);rs=ps.executeQuery();//adiciona as colunasdtm.addColumn("id");dtm.addColumn("descricao");dtm.addColumn("data ");dtm.addColumn("servico");while(rs.next()){//pega os valores do bd para popular tabeladtm.addRow(newString[]{rs.getString("id"),rs.getString("descricao"),rs.getString("data"),rs.getString("servico")});}desconectar();returndtm;}
e quando for solucionado sua duvida edite o seu topico e coloque na frente RESOLVIDO
exemplo
Popular Jtable com dados do banco - RESOLVIDO
S
souzajhonatan
Legal, acabei de chegar no servico, quando chegar em casa vo fazer o teste.
Obrigado
Marky.Vasconcelos1 like
NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
Desculpa ser radical mas só assim pra ver se param.
Da uma olhada nesse tópico que fala sobre como implementar um TableModel de verdade. http://www.guj.com.br/posts/list/132698.java
thiago_spdvr
Qual a diferença, falando em boas práticas de programação entre popular o Jtable direto do view, ou criar um metodo na classe DAO que retorna um List ou ArrayList pra classe View, onde só se mostraria os dados no JTable ??
lina1 like
Mark_Ameba:
NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin!
felipef
POst Errado
Marky.Vasconcelos
lina:
Mark_Ameba:
NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin!
Ow talvez o povo aprenda e não queira nem saber de um model mais inteligente.
lina…
acho que agora voce que esta contra mim né?
XD
lina
Mark_Ameba:
lina:
Mark_Ameba:
NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin!
Ow talvez o povo aprenda e não queira nem saber de um model mais inteligente.
lina…
acho que agora voce que esta contra mim né?
XD
Oi,
Não não!! quem sou eu para fazer uma coisas como essa… =P
Tchauzin!
C
capistrano
ai na boa nao sou muito experiente em java… por isso mesmo utilizei a DefaultTableModel…
a outra pode ser mais inteligente e melhor como estao dizendo nao duvido (vou estudar ela)
mas DefaultTableModel me serviu certinho para o que precisava… nao tenho nenhuma queixa…
Marky.Vasconcelos
A Power Ranger rosa? XD
Pro topico… voce podia estudar uma implementação mais interessante como o ObjectTableModel invés de usar esse Default.
Mas o interessante mesmo é entender como funciona o TableModel para JTables.
S
souzajhonatan
OK. fiz o codigo… mais como sou mto avançado em java rsrs estoou tentanco chamar o metodo na view e não esta dando certo…
vc pode me ajudar?
Marky.Vasconcelos
Posta o que voce fez até agora.
S
souzajhonatan
usei o codigo que passaram...
esse codigo ta na DAO
publicDefaultTableModelmetodo()throwsException{DefaultTableModeldtm=newDefaultTableModel(){publicbooleanisCellEditable(introw,intcolumn){returnfalse;}};Stringsql="select * from ocorrencia";PreparedStatementpst=conn.prepareStatement(sql);ResultSetrs=pst.executeQuery();//adiciona as colunasdtm.addColumn("idocorrencia");dtm.addColumn("descricao");dtm.addColumn("data_ocorrencia ");dtm.addColumn("servico");dtm.addColumn("placa");dtm.addColumn("nomecliente");while(rs.next()){//pega os valores do bd para popular tabeladtm.addRow(newString[]{rs.getString("idocorrencia"),rs.getString("descricao"),rs.getString("data_ocorrencia"),rs.getString("servico"),rs.getString("placa"),rs.getString("nomecliente")});}pst.close();rs.close();returndtm;}
Aqui é meu JFRame, mas como não consegui nada.. não tem nada chamando o metodo.. é so o codigo msm com uma consulta que fiz...
publicclassConsultarOcorrenciaextendsjavax.swing.JFrame{publicConsultarOcorrencia(){initComponents();}privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){cliente.setNomecli(tfnomecli.getText());ocorrencia.setCliente(cliente);Veiculoveiculo=newVeiculo();veiculo.setPlaca(tfplaca.getText());ocorrencia.setVeiculo(veiculo);Servicosservicos=newServicos();IFachadaOcorrenciafachadaoco=newFachadaocorrencia();List<Ocorrencia>list_ocorrencia=fachadaoco.consultar(tfconsulta.getText());for(Ocorrenciaoco:list_ocorrencia){tfdescricaoocorrencia.setText(oco.getDescricao());tfdata.setText(oco.getData());tfservico.setText(oco.getServicos().getDescricaoServ());tfplaca.setText(oco.getVeiculo().getPlaca());tfnomecli.setText(oco.getCliente().getNomecli());}privatevoidtfnomecliActionPerformed(java.awt.event.ActionEventevt){}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newConsultarOcorrencia().setVisible(true);}});}// Variables declaration - do not modifyprivatejavax.swing.JButtonjButton1;privatejavax.swing.JComboBoxjComboBox1;privatejavax.swing.JScrollPanejScrollPane1;privatejavax.swing.JTablejTable1;privatejavax.swing.JTextFieldjTextField1;privatejavax.swing.JTextFieldtfconsulta;privatejavax.swing.JTextFieldtfdata;privatejavax.swing.JTextFieldtfdescricaoocorrencia;privatejavax.swing.JTextFieldtfnomecli;privatejavax.swing.JTextFieldtfplaca;privatejavax.swing.JTextFieldtfservico;
NightDark
souzajhonatan,
não usa DefaultTableModel, você vai achar mais simples usar pq já está pronta e tals, mais o desempenho é horrivel, estuda AbstractTableModel e cria uma classe que vc vai ganhar MUITO em questão de desempenho, não só em uma tabela mais em todas do seu projeto :thumbup:
É melhor perder 1 ou 2 dias estudando e criando a sua Model do que dezenas tentando corrigir erros ou perda de desemprenho por causa do DefaultTableModel =)
S
souzajhonatan
se vc tiver um msn seria melhor para vc me ajudar, ou se vc kiser eu passo o meu aki msm para vc.