此代码根据凭证编号搜索表格。除此之外,我希望它检查是否存在特定的凭证号码,如果它不存在,那么它应该告诉用户指定的凭证号码不存在。目前,当我提供数据库中没有的凭证号码时,它没有做任何事情。建议一些代码plz。
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);
}
}
答案 0 :(得分:1)
为什么不测试是空的?
执行语句之后,您可以立即使用if语句。例如
rs = ps.executeQuery();
if (!rs.next()){
JOptionPane.showMessageDialog(null, "Sorry your request with ID.1001 not found");
}
如果sql结果集为空,则无法跳转到non empty one
。您正在设置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到第一个数据记录。
答案 1 :(得分:0)
您可以创建自定义异常(比如NoRecordFoundException)并在结果集为空时抛出它。这需要在DbUtils.resultSetToTableModel()中添加。然后,您可以添加另一个catch块,以查看数据库是否未返回任何记录,并向用户发送相应的消息。