【发布时间】:2015-05-07 10:44:28
【问题描述】:
我有一个从数据库中选择数据然后尝试将其存储在 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]);
}
问题是只有数据库中的最后一个条目出现在数组列表中。所有其他条目都丢失了。请告诉我我做错了什么。
更新: 输出:
1 Axel Namek
1 Axel Namek
在我的数据库中,这个条目是最后一个
【问题讨论】:
-
你试过调试循环中发生的事情吗?
-
只需使用
arrMatrix.add(arrRows)并摆脱j。虽然我不认为这是错误的根源,但这是不必要的复杂性。 -
arrMatrix.add(arrRows) 做同样的事情。实际上这是我以前使用的。然后我得到了那个错误,所以我把它改成了上面的代码。但仍然是一样的。
-
你能发布你得到的输出吗?您的数据库中有多少行?这两行都打印同样的东西吗?
-
哎呀我搞砸了输出它实际上是一个两行输出。无论我打印多少次它总是一样的。