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.
Alguem pode me ajudar?
Obrigado.
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
public DefaultTableModel metodo() throws Exception{
DefaultTableModel dtm = new DefaultTableModel() {
public boolean isCellEditable(int row, int column) {
return false;
}
};
sql = "select * from sua_tabela";
ps = conectar().prepareStatement(sql);
rs = ps.executeQuery();
//adiciona as colunas
dtm.addColumn("id");
dtm.addColumn("descricao");
dtm.addColumn("data ");
dtm.addColumn("servico");
while (rs.next()) {
//pega os valores do bd para popular tabela
dtm.addRow(new String[] {rs.getString("id"), rs.getString("descricao"), rs.getString("data"), rs.getString("servico") });
}
desconectar();
return dtm;
}
e quando for solucionado sua duvida edite o seu topico e coloque na frente RESOLVIDO
exemplo
Popular Jtable com dados do banco - RESOLVIDO
1 curtida
Legal, acabei de chegar no servico, quando chegar em casa vo fazer o teste.
Obrigado
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
1 curtida
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 ??
lina
Outubro 8, 2009, 9:09am
#6
[quote=Mark_Ameba]NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
[/quote]
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin!
1 curtida
[quote=lina][quote=Mark_Ameba]NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
[/quote]
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin![/quote]
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
Outubro 8, 2009, 1:45pm
#9
[quote=Mark_Ameba][quote=lina][quote=Mark_Ameba]NÃO use DefaultTableModel.
E parem de insistir de ensinar essa m#$d@ pro povo.
[/quote]
Oi,
Por 1 lado é bom utilizar o DefaultTableModel… pois você irá aprender a nunca mais utiliza-lo
Tchauzin![/quote]
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[/quote]
Oi,
Não não!! quem sou eu para fazer uma coisas como essa… =P
Tchauzin!
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…
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.
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?
Posta o que voce fez até agora.
usei o codigo que passaram…
esse codigo ta na DAO
public DefaultTableModel metodo() throws Exception{
DefaultTableModel dtm = new DefaultTableModel() {
public boolean isCellEditable(int row, int column) {
return false;
}
};
String sql = "select * from ocorrencia";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
//adiciona as colunas
dtm.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 tabela
dtm.addRow(new String[] {rs.getString("idocorrencia"), rs.getString("descricao"), rs.getString("data_ocorrencia"), rs.getString("servico"),rs.getString("placa"),rs.getString("nomecliente") });
}
pst.close();
rs.close();
return dtm;
}
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…
[code]
public class ConsultarOcorrencia extends javax.swing.JFrame {
public ConsultarOcorrencia() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
cliente.setNomecli(tfnomecli.getText());
ocorrencia.setCliente(cliente);
Veiculo veiculo = new Veiculo();
veiculo.setPlaca(tfplaca.getText());
ocorrencia.setVeiculo(veiculo);
Servicos servicos = new Servicos();
IFachadaOcorrencia fachadaoco = new Fachadaocorrencia();
List<Ocorrencia> list_ocorrencia = fachadaoco.consultar(tfconsulta.getText());
for(Ocorrencia oco :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());
}
private void tfnomecliActionPerformed(java.awt.event.ActionEvent evt) {
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ConsultarOcorrencia().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField tfconsulta;
private javax.swing.JTextField tfdata;
private javax.swing.JTextField tfdescricaoocorrencia;
private javax.swing.JTextField tfnomecli;
private javax.swing.JTextField tfplaca;
private javax.swing.JTextField tfservico;[/code]
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 =)
se vc tiver um msn seria melhor para vc me ajudar, ou se vc kiser eu passo o meu aki msm para vc.