問題:使用jdbc時,resultSet始終不能獲取第一行數據

  • 使用jdbc時,resultSet 始終不能獲取第一行數據,解決方法:在遍歷結果集resultSet 之前,先調用一次 ’ beforeFirst() ’ 即 重置遊標的位置到第一行之前。
	@Test
//	@SuppressWarnings("unchecked")
	public void test_query_data_from_userTable() throws Exception {
		String sql_query_userTable = "select id, name from user order by id asc";
		final List<User> list = new ArrayList<User>();
		jdbcTemplate.query(sql_query_userTable, new RowMapper() {
			public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
				System.out.println("current row:" + rs.getRow() + ", " + rowNum);
				/** 必須重置遊標到第一行之前 */
				rs.beforeFirst();
				while(rs.next()) {
					int id = rs.getInt(1);
					String name = rs.getString(2);
					list.add(new User(id, name));
				}
				return null;
			}
		});
		System.out.println(list.size());
		for(User u : list) {
			System.out.println(u);
		}
	}
  • 執行結果如下
# 可見當前行號爲 1,即當前遊標在第 2 行之前,所以第 1 行始終不能被遍歷到
current row:1, 0 		
# 重置遊標(beforeFirst())後,數據正確打印
5
User [id=13, name=李斯]
User [id=14, name=張麗]
User [id=15, name=劉晶]
User [id=16, name=悟空]
User [id=17, name=Micheal 劉]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章