我有一个从数据库中选择数据然后尝试将其存储在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
在我的数据库中,此条目是最后一个
答案 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是很简单的。显然,这个例子可以建立更多。
我质疑你必须用数组做其他事情的潜在动机,或者你只是在循环中打印它。