FaT*_*bez 1 java mysql loops jdbc
我执行:
select * from table_name order by column desc;
Run Code Online (Sandbox Code Playgroud)
我想按顺序浏览这些项目。我从中得到ResultSet并做到了:
while(set.next()) {
// processing code
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这跳过了第一个元素。遍历整个过程ResultSet并包含第一个元素的最佳方法是什么?
我知道这确实很旧,但我的搜索击中了这里,并且在解决方案对我不起作用(仅转发结果集)之后,我相信这个问题从未真正得到解决。就我而言,我正在做:
jdbcTemplate.query(sql, rs -> {
while(rs.next()) {
// processRow
}
// no return statement
, args);
Run Code Online (Sandbox Code Playgroud)
然后,我更仔细地查看了被调用的方法,第二个参数是“RowCallbackHandler”而不是“ResultSetExtractor”,因此此代码的正确用法是:
jdbcTemplate.query(sql, rs -> {
// processRow
}, args);
Run Code Online (Sandbox Code Playgroud)
这会为您执行“while (rs.next())”循环。我敢打赌OP正在做和我一样的事情。
使用:
set.beforeFirst();
while(set.next()) {
// Your code
}
Run Code Online (Sandbox Code Playgroud)
前进之前,这将运行循环主体一次ResultSet。您不想使用do循环(我先前的回答),因为如果查询返回0行,它将引发Exception。