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

如何将PreparedStatement查询的ResultSet结果转为字符串存入数据库

问题根源

你代码中直接对ResultSet实例调用String.valueOf(rs),本质是调用了ResultSetImpl的默认toString()方法,输出的是类名+内存地址的格式,而非你查询到的buildingName字段实际值。

正确处理步骤

  • 执行完查询拿到ResultSet后,先调用next()方法移动游标到有效数据行(该方法返回布尔值,可同步判断是否查询到匹配结果)
  • 调用ResultSet的getString()方法传入字段名/字段索引,拿到实际的字符串值,再赋值给插入语句的参数

修正后代码

PreparedStatement check = connection.prepareStatement(
        // 原语句的GROUP BY + HAVING可简化为WHERE,查询效率更高
        "SELECT buildingName FROM building WHERE buildingId = ?");
check.setInt(1, building_id);
ResultSet rs = check.executeQuery();
String buildingName = "";
// 移动游标到结果行,同时判断是否存在匹配数据
if (rs.next()) {
    // 提取查询到的buildingName字段值
    buildingName = rs.getString("buildingName");
}
insert.setString(1, buildingName);
insert.executeUpdate();

额外注意事项

  • 如果查询可能返回多条数据,可以把if(rs.next())替换为while(rs.next())遍历所有结果
  • 操作完成后要按ResultSet→PreparedStatement→Connection的顺序关闭资源,避免内存泄漏

内容的提问来源于stack exchange,提问作者onidzuka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:01