java - 检查数据库中是否有空记录

标签 java database netbeans

此代码根据凭证编号搜索表格。除此之外,我希望它检查特定的优惠券编号是否存在,如果不存在,那么它应该告诉用户指定的优惠券编号不存在。目前,当我提供数据库中不存在的凭证号时,它不会执行任何操作。请建议一些代码。

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/

相关文章:

java - 这个文件在Java中是如何传递的?

java - Maven 构建错误 : mvn. bat 无法识别

java - 列表对象的 XSD

java - 我们可以使用 AbstractList 而不是 List 接口(interface)来保存 Arraylist 实例吗?

sql - 如何序列化数据库中的事件?

java - 如何在 Netbeans 上为 Java 桌面应用程序设置单选按钮初始值?

java - 一个intellij模块有多个SDK

java - 有没有有效的方法使用 GSON 将 org.json.JSONObject 转换为 POJO 模型?

Python & MySQL - 在数据库中存储列表的解决方案?

php - Laravel mysql 多个操作与一个数据库实例