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

咨询:如何将数据库contact列值提取至数组?现有代码问题排查

问题分析与解决

嘿,我一眼就看到问题所在啦!你把打印列表的语句放在了while循环内部,导致每往列表里添加一个contact值,就会把当前的整个列表完整打印一次,所以才会出现[0547615632]之后跟着更长列表的重复输出。

接下来给你几个优化和修复的点:

  • 调整打印位置:把System.out.println(l);移到while循环外面,等所有contact数据都读取并添加到列表后,再一次性打印完整的结果。
  • 优化SQL查询:既然你只需要contact列的数据,完全没必要用select *,改成select contact from members可以减少数据库返回的数据量,提升查询效率。
  • 完善异常处理:你现在的e.getMessage()只是获取异常消息但没有输出,换成e.printStackTrace()能打印完整的异常栈信息,方便后续排查问题。
  • 资源自动关闭:使用Java 7+支持的try-with-resources语法,自动关闭PreparedStatement和ResultSet,避免数据库资源泄漏。

修改后的完整代码如下:

List<String> l = new ArrayList<>();
try (PreparedStatement pst = conn.prepareStatement("select contact from members");
     ResultSet rs = pst.executeQuery()) {
    while (rs.next()) {
        String con = rs.getString("contact");
        l.add(con);
    }
    // 循环结束后打印完整列表
    System.out.println(l);
} catch (Exception e) {
    // 打印完整异常信息便于排查
    e.printStackTrace();
}

这样修改后,运行就能得到只包含所有contact值的完整列表啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:12:59