Olá,
Sei que pode parecer mais um tópico sobre exibição de dados vindo de um determinado BD para um Jtable (e realmente é) mas mesmo futucando os vários posts a respeito não vi nenhum que realmente me esclarecesse diante do meu código. Todos os exemplos vistos antes referem-se a aplicação desta exibição quando se tratando em uma única camada, por isso que trago-lhe meu dilema.
Vamos ao caso: os dados armazenados no vetor estão corretos mas não estão sendo exibidas as linhas no JTable. É mostrada apelas uma, e com o primeiro nome da consulta vinda do BD, quando feita uma consulta sem referências.
Meu código está bem dividido, como manda o figurino (dao, business, view, etc…) e é exatamente nesta passagem/exibição de dados é que estou travado e espero que possam me ajudar neste problema, que está me deixando um pouco mais careca (heheeh)…
Vamos aos códigos dos trechos.
view
private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel modeloTabela = (DefaultTableModel) jTable.getModel();
jTable.setModel(modeloTabela);
modeloTabela.setRowCount(0);
jTable.setModel(modeloTabela);
try {
String nome = jTextFieldBusca.getText();
ArquivoMortoBS arquivoMortobs = new ArquivoMortoBS();
Iterator vectorBusca = arquivoMortobs.consultar(nome);
if (vectorBusca.hasNext()) {
ArquivoMorto busca = (ArquivoMorto) vectorBusca.next();
adicionarLinhaTabela(busca);
} else {
JOptionPane.showMessageDialog(null, "Funcionário não encontrado");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
public void adicionarLinhaTabela(ArquivoMorto morto) {
String Nome = morto.getNome();
String Admissao = morto.getDataAdmissao();
String Demissao = morto.getDataDemissao();
String Empresa = morto.getEmpresa();
String Caixa = morto.getCaixa();
DefaultTableModel modeloTadela = (DefaultTableModel) jTable.getModel();
String[][] novaLinha = new String[][]{
{Nome, Admissao, Demissao, Empresa, Caixa}
};
modeloTadela.addRow(novaLinha);
jTable.setModel(modeloTadela);
jTable.setValueAt(Nome, jTable.getRowCount() - 1, 0);
jTable.setValueAt(Admissao, jTable.getRowCount() - 1, 1);
jTable.setValueAt(Demissao, jTable.getRowCount() - 1, 2);
jTable.setValueAt(Empresa, jTable.getRowCount() - 1, 3);
jTable.setValueAt(Caixa, jTable.getRowCount() - 1, 4);
table1Linhas++;
}
business
public Iterator consultar(String nome) throws Exception {
return arqMortoDAO.consultarFuncionario(nome);
}
DAO
public Iterator consultarFuncionario(String nome) throws Exception {
Vector busca = new Vector();
try {
String sql = null;
dataBase = new ConexaoDB();
conexao = dataBase.getConexao();
if (nome == null || nome.equals("")) {
sql = "SELECT nome, admissao, demissao, empresa, caixa FROM funcionario order by nome";
} else {
sql = "SELECT nome, admissao, demissao, empresa, caixa FROM funcionario where nome like '" + nome + "' order by nome";
}
Statement statement = conexao.createStatement();
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
ArquivoMorto arqMorto = new ArquivoMorto();
arqMorto.setNome(resultSet.getString("Nome"));
arqMorto.setDataAdmissao(resultSet.getString("Admissao"));
arqMorto.setDataDemissao(resultSet.getString("Demissao"));
arqMorto.setEmpresa(resultSet.getString("Empresa"));
arqMorto.setCaixa(resultSet.getString("Caixa"));
busca.add(arqMorto);
}
resultSet.close();
} catch (Exception exception) {
throw new Exception("erro ao efetuar consulta :" + exception.getMessage());
} finally {
dataBase.fecharConexao();
}
return busca.iterator();
}
Fiz vários testes e até onde pude perceber quando chamo o adicionarLinhaTabela ele só está sendo executado uma única vez, por isso só exibe uma linha e pronto. Já pesquisei algo sobre isso e tal mas não encontrei. Ou sou meio lontra e não estou pesquisando direito ou é algo mais do que citei.
Espero que as informações estejam claras e possam ajudar.
Desde já muito obrigado!