2014-12-04 87 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