簡體   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