您的位置:首页 > 数据库 > MySQL

JDBC查询MySql只显示序号为偶数的记录的原因

2011-04-11 14:39 267 查看
这是一段JDBC查询数据库的例子,奇怪的是,执行下来,只能查询到序号为偶数的记录。例如:数据库中有两条符合要求的数据,只能查询到第二条,

有四条符合要求的数据,只能查询到第二条、第四条,依此类推。。

public ArrayList<Task> getPTask1(int userId) {
try {
ArrayList<Task> al = new ArrayList<Task>();
pstmt = (PreparedStatement) ct
.prepareStatement("select * from task where receiverID = ? and publisherID = ? and remark = 2");
pstmt.setInt(1, userId);
pstmt.setInt(2, userId);
ResultSet rs = (ResultSet) pstmt.executeQuery();

while (rs.next()) {
System.out.println(rs.next());
Task task = new Task();
task.setTaskId(rs.getInt(1));
task.setTopic(rs.getString(2));
task.setContent(rs.getString(3));
task.setAddition(rs.getBlob(4));
task.setUserByPublisherId(this.getUById(rs.getInt(5)));
task.setUserByReceiverId(this.getUById(rs.getInt(6)));
task.setDate(rs.getString(7));
task.setRemark(rs.getInt(8));
task.setLevel(rs.getString(9));
task.setAord(rs.getString(10));
task.setReason(rs.getString(11));
task.setDegree(rs.getString(12));
task.setAddName(rs.getString(13));
al.add(task);
System.out.println("task4Content:" + task.getContent());
}
return al;
} catch (Exception e) {
e.printStackTrace();
return null;
}


最后得知,原因是:

rs.next每执行一次,指针移动一行。所以,将System.out.println(rs.next());注释掉后,就会正常了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐