此代码根据凭证编号搜索表格。除此之外,我希望它检查特定的优惠券编号是否存在,如果不存在,那么它应该告诉用户指定的优惠券编号不存在。目前,当我提供数据库中不存在的凭证号时,它不会执行任何操作。请建议一些代码。
try {
String sql = "select item_type as 'Item Type',md_by as 'Made By',"
+ "model as 'Model', selling_price as 'Selling Price',"
+ "selling_date as 'Selling Date', vouch_no as 'Voucher No.',"
+ "vouch_date as 'Voucher Date', record_no as 'Record No.' "
+ "from selling where vouch_no = ?";
ps = con.prepareStatement(sql);
ps.setInt(1, Integer.parseInt(txt_vouchno_s.getText()));
rs = ps.executeQuery();
Table_s.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null, "Error: " + ex);
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, "Error: " + ex);
}
}
最佳答案
为什么不测试是否为空?
在执行语句之后,您可以立即添加 if 语句。例如
rs = ps.executeQuery();
if (!rs.next()){
JOptionPane.showMessageDialog(null, "Sorry your request with ID.1001 not found");
}
如果 sql 结果集为空,则无法跳转到非空结果集
。您正在设置 sql
生成 ps.executeQuery
并查看结果。如果结果为空,则创建一个新的sql
,依此类推。或者您认为 where vouch_no = 1001
意味着什么。
您需要两个ps = con.prepareStatement(sql);
例如
没有 sql where vouch_no = ?
psAll = con.prepareStatement(sqlAll);
psSearch = con.prepareStatement(sqlSearch);
...
rsAll = psAll.executeQuery();
Table_s.setModel(DbUtils.resultSetToTableModel(rsAll));
如果您搜索并找到凭证,请将 Table_s 当前数据记录设置为指向该凭证。如果没有找到凭证,则将 Table_s 设置为第一条数据记录。
关于java - 检查数据库中是否有空记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281316/