Nadusha
Nadusha

Reputation: 35

null pointer exception can't be fixed

I'm implementing a software for a stock management system in java.I'm using MVC design pattern and i found this exception when trying to fill a JcomboBox. I want to get all the batches when a item-code is being passed into the method.so the method should return a array-list of relevant objects. but when I run this program it gave me this kinda error and it says there is empty result set. but i also tried the sql code manually in the terminal and it worked. so i can't imagine how to fix this error. i'm glad if anyone can tell me where is the problem. I tried to post my screen shots but it cannot be done as i don't have enough reputation

here is my code

  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;

[

Upvotes: 1

Views: 83

Answers (2)

Mureinik
Mureinik

Reputation: 312136

ResultSet.next() moves the result set's cursor to the next row. When you print it, before the while loop, you're losing the first row (or the only row in a single row result set). Personally, I'd just omit it, but if you have to have it, you could extract the result to a local variable:

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;

Upvotes: 1

janasainik
janasainik

Reputation: 831

Remove this line.

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

You are calling set.next() twise, this moves the resultset pointer to next row.

Upvotes: 0

Related Questions