如果我正在过滤的ID不在我创建的表模型中,我想获得一个messageDialog。问题是代码在没有if
的情况下可以正常工作,但是当我为messageDialog条件添加if
时,我意识到找到了数据但未显示。
代码:
public void buscarNumeroSerie (String nserie)
{
try {
String [] campos={"NUMERO_SERIE","MARCA","GAVETA"};
String filtroNS = nserie;
String NSSQL = "SELECT NUMERO_SERIE,MARCA,GAVETA FROM"
+ "(SELECT NUMERO_SERIE,MARCA,GAVETA FROM discos_wd "
+ "UNION "
+ "SELECT NUMERO_SERIE,MARCA,GAVETA FROM discos_toshiba "
+ "UNION "
+ "SELECT NUMERO_SERIE,MARCA,GAVETA FROM discos_seagate "
+ "UNION "
+ "SELECT NUMERO_SERIE,MARCA,GAVETA FROM discos_samsung "
+ "UNION "
+ "SELECT NUMERO_SERIE,MARCA,GAVETA FROM discos_hitachi )"
+ "AS TROUBLE WHERE NUMERO_SERIE LIKE '%"+filtroNS+"%'";
System.out.println(NSSQL);
nsconn = metodosPool.dataSource.getConnection();
ModeloTablaLista = new DefaultTableModel(null, campos);
stmnt = nsconn.prepareStatement(NSSQL);
ResultSet nsrs = stmnt.executeQuery(NSSQL);
if(nsrs.next()== true){
String [] nsfila = new String[3];
while (nsrs.next())
{
nsfila[0]=nsrs.getString("Numero_Serie");
nsfila[1]=nsrs.getString("Marca");
nsfila[2]=nsrs.getString("Gaveta");
ModeloTablaLista.addRow(nsfila);
}
nsrs.close();
stmnt.close();
tablaDiscosGaveta.setModel(ModeloTablaLista);
}
else
{
System.err.println("No existen datos asociados");
JOptionPane.showMessageDialog(rootPane, "Disco no encontrado, quiere:");
}
我的想法是,包含if
位代码的左图与右图一样显示了我需要的结果。我已经尝试过for
循环,添加了一个新的resultSet并更改了没有结果的if
条件的位置。
答案 0 :(得分:0)
nsrs.next()
移至ResultSet
中的下一个记录,所以
if(nsrs.next()== true){
String [] nsfila = new String[3];
移动到第一条记录。
然后
while (nsrs.next()) {
移动到第二条记录,而第一条记录被跳过。因此,代码需要先处理记录,然后再移至下一条记录。这是另一种方法:
//if(nsrs.next()== true){
// String [] nsfila = new String[3];
String [] nsfila = null;
while (nsrs.next()) {
nsfila = new String[3];
nsfila[0]=nsrs.getString("Numero_Serie");
nsfila[1]=nsrs.getString("Marca");
nsfila[2]=nsrs.getString("Gaveta");
ModeloTablaLista.addRow(nsfila);
}
if (nsfila == null) {
// no data...
}
另请参阅:尝试使用资源,或在最终块中使用close()
。