这是我的数据库读取代码。但这仅显示具有偶数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);
}
答案 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);
}
...这将解决您跳过第二个条目并读取结果集末尾的问题。