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

Java如何查询MySQL中指定颜色对应所有ID并转为数组

MySQL多匹配结果的全量ID获取与数组转换实现

现有代码缺陷

当前实现只通过单次rs.next()判断就读取第一条匹配记录直接返回,缺少遍历结果集所有行的逻辑,因此只能拿到单条匹配的ID,无法满足多结果查询需求。

修正实现要点

  • 初始化可变长度集合存储匹配到的ID,避免固定长度数组的容量溢出问题
  • 将原本判断单条结果的if (rs.next())替换为while循环,逐行扫描结果集中的所有匹配记录
  • 遍历完成后将集合转换为目标类型的数组
  • 在finally块中关闭ResultSet、PreparedStatement等JDBC资源,避免连接泄漏

适配现有代码的实现示例

List<Integer> matchedIds = new ArrayList<>();
try {
    PreparedStatement ps = plugin.SQL.getConnection().prepareStatement("SELECT ID FROM playerinfo WHERE COLOUR = ?");
    ps.setString(1, colour);
    ResultSet rs = ps.executeQuery();
    // 循环读取所有匹配行,而非仅获取第一行
    while (rs.next()) {
        int currentId = rs.getInt("ID");
        matchedIds.add(currentId);
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    // 补充资源关闭逻辑,避免资源泄漏
    // rs.close();
    // ps.close();
}
// 将List转换为int数组,满足多结果集转数组的需求
int[] idArray = matchedIds.stream().mapToInt(Integer::intValue).toArray();
return idArray;

对应样例数据的实际效果:当查询条件颜色为red时,最终得到的数组为[1, 4, 5],完整覆盖表中所有匹配颜色的ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 07:36:00