返回带有事件号SELECT *查询的ID

时间:2019-03-21 05:02:37

标签: java mysql database

这是我的数据库读取代码。但这仅显示具有偶数ID的项目(例如:2、4、6 ...)。我尝试调用一个具有奇数的项目,但它返回错误为;

  

内部错误

     

错误java.sql.SQLException:结果集结束之后

这怎么可能?

try {
       dbConnect dbConnect = new dbConnect();
       Connection currentCon = dbConnect.Connect();
       String sql = "SELECT * FROM vehicle";
       PreparedStatement ps = currentCon.prepareStatement(sql);
       ResultSet rs = ps.executeQuery();
       while (rs.next()) {
           System.out.println("inside rs " + rs.next());
           ystem.out.println(rs.getInt("product_id"));
           rs.getInt("product_id");
       }
} catch (SQLException e) {
       System.out.println("Error " + e);
}

2 个答案:

答案 0 :(得分:2)

您正在ResultSet#next()循环中第二次调用while。删除它:

while (rs.next()) {
   System.out.println("inside rs ");
   System.out.println(rs.getInt("product_id"));
}

每次调用ResultSet#next()时,都将结果集的光标前移一个。这就是为什么您似乎一次要遍历两个记录的结果集的原因。因此,您只需要在循环控制逻辑中执行此操作即可。

答案 1 :(得分:0)

rs.next()的调用将光标移至下一条记录,如果有一个记录,则返回true;否则,则返回false。

问题在于,在每个循环中,您两次调用rs.next()

如果您删除多余的呼叫并清理其他代码:

while (rs.next()) {
    int productId = rs.getInt("product_id");
    System.out.println(productId);
}

...这将解决您跳过第二个条目并读取结果集末尾的问题。