You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结果集无当前行报错:JDBC Template查询代码问题求助

排查JDBC Template「结果集无当前行」报错

错误原因

你的代码使用了do-while循环,而JDBC的ResultSet初始位置是在第一行记录之前的。do-while会先执行循环体里的request.getLong(1)、request.getString(2)等操作,这时候还没调用next()将指针移动到有效行,直接读取列值就会触发「结果集无当前行」的错误。

修正代码

把do-while改成while循环,先通过request.next()判断是否有有效行,再执行读取操作:

jdbcTemplate.query(sql, request -> {
    while (request.next()) {
        response.put(request.getLong(1), request.getString(2));   
        if (request.getInt(5) != 1) {
            responseForMachine.put(request.getString(3), "1A");
        }                                                             
    }
    return null;
}, time);

额外注意事项

  • 确认SQL查询返回的结果集包含至少5列(你用到了索引1、2、3、5),如果列数不足,即使修复循环,也会抛出列不存在的错误。
  • 如果SQL可能返回空结果集,while(request.next())会直接跳过循环体,不会触发任何读取操作,避免报错。

内容的提问来源于stack exchange,提问作者My Animation TV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:24:52