繁体   English   中英

空指针异常无法修复

[英]null pointer exception can't be fixed

我正在用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;

[

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;

删除此行。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM