Pessoal, bom dia.
Primeiramente, gostaria de agradecer todos os participantes do fórum, pois os problemas e artigos já existentes, sempre me ajudaram em duvidas.
Este é o meu primeiro tópico aqui no fórum e preciso da ajuda de vocês, pois não achei nada parecido.
Estou criando uma aplicação no netbeans utilizando métodos DAO, swing e ObjectTableModel que extraem dados de um banco em DB2.
Não estou conseguindo listar os dados com base em um jtextfield. Se deixo o valor fixo no código SQL, os dados listam normalmente. Sei que para acessar necessito de um select com valores “?” e métodos get e set para puxar os dados.
Seguem os códigos:
Classe modelo:
import com.towel.el.annotation.Resolvable;
public class Teste {
@Resolvable(colName = "INBOUND")
private String inbound;
@Resolvable(colName = "PRODUTO")
private String produto;
@Resolvable(colName = "DELIVERY")
private String delivery;
public String getInbound() {
return inbound;
}
public void setInbound(String inbound) {
this.inbound = inbound;
}
public String getProduto() {
return produto;
}
public void setProduto(String produto) {
this.produto = produto;
}
public String getDelivery() {
return delivery;
}
public void setDelivery(String delivery) {
this.delivery = delivery;
}
}
Classe DAO:
public List<Teste> listarTabela() {
String sql = "SELECT INB_NO AS INBOUND, "
+ "ITEM_CD AS PRODUTO, "
+ "REF_NO AS DELIVERY "
+ "FROM GWMS.TWMS_IB_INB_D "
+ "WHERE ITEM_CD = ?"; // aqui se colocar o valor fixo eu consigo acessar
List<Teste> lista = new ArrayList<Teste>();
try {
Connection conn = ConexaoDB.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
//stmt.setString(1, teste.getProduto()); //aqui deveria setar o valor do textfield
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Teste teste = new Teste();
teste.setInbound(rs.getString("INBOUND"));
teste.setProduto(rs.getString("PRODUTO"));
teste.setDelivery(rs.getString("DELIVERY"));
lista.add(teste);
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return lista;
}
}
Classe view:
Código para chamar a tabela
public void TabelaAtualizadaTeste(List lista) {
AnnotationResolver resolver = new AnnotationResolver(Teste.class);
ObjectTableModel<Teste> tableModel = new ObjectTableModel<Teste>(
resolver, "inbound,produto,delivery");
tableModel.setData(lista);
JTable table = new JTable(tableModel);
jScrollPane1.setViewportView(table);
table.setVisible(true);
}
Código do botão para chamar os métodos com o valor fixo:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
TesteDAO dao = new TesteDAO();
List<Teste> list = dao.listarTabela();
TabelaAtualizadaTeste(list);
}
E com o valor da textfield que não sei como fazer:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
TesteDAO dao = new TesteDAO();
Teste product = new Teste();
product.setProduto(jTextField2.getText().toString());
List<Teste> list = dao.listarTabela();
TabelaAtualizadaTeste(list);
}
Não sei como chamar o método listarTabela com a textfield. Alguém poderia me ajudar?
Desde já agradeço