空指针异常无法修复

时间:2014-12-04 07:00:54

标签: java mysql

我正在java中为库存管理系统实现一个软件。我正在使用MVC设计模式,我在尝试填充JcomboBox时发现了这个异常。我想在将项目代码传递给方法时获取所有批次。因此该方法应返回相关对象的数组列表。但是当我运行这个程序时,它给了我这样的错误,它说有空结果集。但我也尝试在终端手动sql代码,它的工作原理。所以我无法想象如何解决这个错误。如果有人能告诉我问题在哪里,我很高兴。我试图发布我的屏幕截图但由于我没有足够的声誉而无法完成

这是我的代码

  String sql = "select batchNo from MainBatch where itemCode = ?";
    Connection c=DBConnection.getInstance().getConnection();
    PreparedStatement ps=c.prepareStatement(sql);
    ps.setString(1, itemCode);
    System.out.println(itemCode+" -----> item code is thiss");
    ResultSet set=ps.executeQuery();
    ArrayList<MainBatch> list=new ArrayList<>();

    System.out.println(set.next()+" <-----result set is");
    while (set.next()) {
        MainBatch batch=new MainBatch(set.getString("batchNo"));
        list.add(batch);
    }
    return list;

[

2 个答案:

答案 0 :(得分:1)

ResultSet.next()将结果集的光标移动到下一行。当您打印它时,在while循环之前,您将丢失第一行(或单行结果集中的唯一行)。就个人而言,我只是省略它,但如果你必须拥有它,你可以将结果提取到局部变量:

boolean next = set.next();
System.out.println(next + " <-----result set is");
while (next) {
    MainBatch batch=new MainBatch(set.getString("batchNo"));
    list.add(batch);
    next = set.next();
}
return list;

答案 1 :(得分:0)

删除此行。

System.out.println(set.next()+" <-----result set is");

您正在调用set.next()两次,这会将结果集指针移动到下一行。