我正在迭代 ResultSet
并尝试将其值复制到 ArrayList
中。
问题是它只遍历一次。但是使用 resultset.getString("Col 1")
到 resultset.getString('Col n")
会显示所有列的所有条目。
下面是代码片段-
ResultSet resultset = null;
ArrayList<String> arrayList = new ArrayList<String>();
int i = 1;
while (resultset.next()) {
arrayList.add(resultset.getString(i++));
System.out.println(resultset.getString("Col 1"));
System.out.println(resultset.getString("Col 2"));
System.out.println(resultset.getString("Col n"));
}
ResultSet
的唯一值被复制到 ArrayList
是针对第 1 列。然后退出。
但我可以看到所有列的值。
为什么?
最佳答案
如果我正确理解了您的问题,这里可能存在两个问题:
resultset
是null
- 我认为这不可能是因为你会在你的 while 循环中得到一个异常并且什么都不会输出.- 第二个问题是
resultset.getString(i++)
将从每个后续行获取第 1、2、3 列等等。
我认为第二点可能是您的问题。
假设您只返回了 1 行,如下所示:
Col 1, Col 2, Col 3
A , B, C
您的代码只会得到 A - 它不会得到其余的列。
我建议您将代码更改如下:
ResultSet resultset = ...;
ArrayList<String> arrayList = new ArrayList<String>();
while (resultset.next()) {
int i = 1;
while(i <= numberOfColumns) {
arrayList.add(resultset.getString(i++));
}
System.out.println(resultset.getString("Col 1"));
System.out.println(resultset.getString("Col 2"));
System.out.println(resultset.getString("Col 3"));
System.out.println(resultset.getString("Col n"));
}
编辑:
获取列数:
ResultSetMetaData metadata = resultset.getMetaData();
int numberOfColumns = metadata.getColumnCount();
关于java - 遍历 ResultSet 并将其值添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517736/