2014-12-04 78 views
0

我正在使用MVC設計模式在java.Im中爲庫存管理系統實現一個軟件,並且在嘗試填充JcomboBox時發現此異常。我想要在將項目代碼傳遞給method.so時返回所有批次,因此該方法應返回相關對象的數組列表。但是當我運行這個程序時,它給了我一個這樣的錯誤,它說有空結果集。但我也嘗試在終端手動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; 

[

+0

您可以提供主機/服務器日誌? – 2014-12-04 07:03:12

+0

嘗試刪除行「System.out.println(set.next()+」<-----結果集是「);」我認爲這是你的問題的地方 – MaVRoSCy 2014-12-04 07:04:27

+0

你是在while循環之前手動移動ResultSet的遊標,而在沒有找到結果的時候 – MaVRoSCy 2014-12-04 07:06:14

回答

0

刪除此行。

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

您正在調用set.next()twise,這將結果集指針移動到下一行。

+0

我做到了,但仍然無法正常工作 – Nadusha 2014-12-04 07:11:40

+0

@Nadusha - 如果這樣做不起作用,您爲什麼接受它作爲答案? – 2014-12-04 07:27:29

+0

@StephenC這是我的不好。我試過但沒有工作 – Nadusha 2014-12-04 07:29:31

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; 
+0

我做到了,但仍然無法正常工作 – Nadusha 2014-12-04 07:10:50