【问题标题】:Java List of array repeating last object fecthed重复最后一个对象的 Java 数组列表
【发布时间】:2015-03-27 16:19:38
【问题描述】:

我正在尝试使用我的数据库中的结果集填充列表。问题是,一旦退出 while() 循环,列表就只显示从 db 恢复的最后一个结果。代码:

public List<String[]> some_function(){
    List<String[]> trs = new ArrayList<String[]>();
    Connection conn = conectar_post("","","","");
    Statement st = null;
    ResultSet rs = null;
    ResultSetMetaData rmd = null;
    String sqls = "";

    sqls = "SELECT col1, col2 FROM table1 LIMIT 4";

    try{ 
        st = conn.createStatement();
        rs = st.executeQuery(sqls);
        rmd = rs.getMetaData();
        int i=0, ncol = 0, w=0;

        ncol = rmd.getColumnCount()+1;
        String[] line = new String[ncol];

        while(rs.next()){
            for(i=1;i<ncol;i++){
                line[i] = rs.getString(i);
            }
            trs.add(line);
            System.out.println(trs.get(w)[i-2]);
            w++;
        }

        System.out.println("> "+trs.get(1)[1]);
        System.out.println("> "+trs.get(2)[1]);
    }
    catch (SQLException e) { e.printStackTrace(); }

    return trs;
}

输出:

244447
244448
244449
352712
> 352712
> 352712

我缺少什么?

【问题讨论】:

  • trs.add(line); 始终是相同的 String[] 对象。
  • 你做适当的调试了吗?
  • 你也应该把它提交给 codereview.stackexchange.com,这段代码真的很难读懂……

标签: java list multidimensional-array parameter-passing


【解决方案1】:
String[] line = new String[ncol];

应该在while(rs.next())里面

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2017-01-28
    • 2017-11-15
    • 2011-07-27
    相关资源
    最近更新 更多