在ArrayList中存储String数组的正确方法是什么?

时间:2015-05-07 10:44:29

标签: java arraylist resultset

我有一个从数据库中选择数据然后尝试将其存储在ArrayList中的函数。 我想先在ResultSet中的每个单独的列中存储一个String数组,然后在ArrayList中添加该数组。

    public void buildConnection() throws SQLException,ClassNotFoundException
{
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
    Statement statement =connection.createStatement();
    ResultSet rSet=statement.executeQuery("select * from details");
    ResultSetMetaData rSetMd=rSet.getMetaData();
    int ColumnsNo=rSetMd.getColumnCount();
    ArrayList<String[]> arrMatrix=new ArrayList<String[]>();
    int j=0;
    while(rSet.next()){
        String arrRows[] = new String[ColumnsNo];
        for(int i=1;i<=ColumnsNo;i++){
            arrRows[i-1]=rSet.getString(i);
        }
        arrMatrix.add(j,arrRows);
        j++;
    }
    System.out.println(arrMatrix.get(0)[0]+" "+arrMatrix.get(0)[1]+" "+arrMatrix.get(0)[2]);
    System.out.println(arrMatrix.get(1)[0]+" "+arrMatrix.get(1)[1]+" "+arrMatrix.get(1)[2]);

}

问题是只有数据库中的最后一个条目出现在arraylist中。所有其他条目都迷路了。请告诉我我做错了什么。

更新: 输出:

 1 Axel Namek
 1 Axel Namek

在我的数据库中,此条目是最后一个

1 个答案:

答案 0 :(得分:0)

我会用;

ArrayList<ArrayList<String>>代替ArrayList<String[]>

然后,您可以使用此方法;

ArrayList<ArrayList<String>> arrMatrix = new ArrayList<ArrayList<String>>();
arrMatrix.add(new ArrayList<String>());
arrMatrix.get(0).add("string value");
System.out.println(arrMatrix.get(0).get(0));
//string value

尽管如此,我怀疑这不是你所追求的。更好的方法是创建一个包含first和surname字段并引用那些

的新类
public class Names {
    public String firstname = null;
    public String surname = null;
    public Names(String first, String sur) {
        firstname = first;
        surname = sur;
    }
}

从那时起;

Names instance = new Names("John", "Doe");
System.out.println(instance.firstname); // John
System.out.println(instance.surname); // Doe

创建一个名字的arraylist是很简单的。显然,这个例子可以建立更多。

我质疑你必须用数组做其他事情的潜在动机,或者你只是在循环中打印它。