问题:使用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 刘]

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值