使用过滤器进行搜索并在jTable中显示



我试图从数据库搜索并在jTable上显示数据,但是,我也想显示类似的名称。

问题是,使用"similar to"或"like"来显示任何位置的相似名称?

比如,我想展示"卢卡斯·桑托斯";和"Santos Jr"如果用户搜索"Santos">

try{
Connection cn=DB.connector.getConnection();
PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_nome similar to ? order by cad_nome asc, cad_cpf asc nulls last ");

if(jTextFieldNOME.getText().equals("")){
//JOptionPane.showMessageDialog(null, "Por favor completar o campo CPF!n");
PreparedStatement stm=cn.prepareStatement("select * from cad_pessoa ");
ResultSet rs = stm.executeQuery();

DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
tm.setRowCount(0);

while(rs.next()){

Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
tm.addRow(o);


}

}
//else {


ps.setString(1, jTextFieldNOME.getText());
ResultSet rs = ps.executeQuery();
ps.execute();


DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
tm.setRowCount(0);

while(rs.next()){

Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
tm.addRow(o);


}

}
catch (Exception e)
{
JOptionPane.showMessageDialog(this, e);
}
}    

这是我对这个问题的解决方案:

else if(jTextFieldNOME.getText() != null) {

PreparedStatement ps=cn.prepareStatement("select cad_nome,cad_apelido,cad_cpf,cad_idade,cad_data from cad_pessoa where cad_nome like ? order by cad_nome asc, cad_cpf asc nulls last ");
ps.setString(1,"%" + jTextFieldNOME.getText() + "%");
ResultSet rs = ps.executeQuery();
ps.execute();


DefaultTableModel tm=(DefaultTableModel) jTableDADOS.getModel();
tm.setRowCount(0);
JOptionPane.showMessageDialog(null, "nomesn");
while(rs.next()){

Object o []= {rs.getString("cad_cpf"), rs.getString("cad_nome"), rs.getString("cad_apelido"), rs.getString("cad_idade"), rs.getDate("cad_data")};
tm.addRow(o);


}

最新更新