這是一段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());注釋掉後,就會正常了。