我已将ArrayList传递给另一个方法。 在这个方法中,我需要从ArrayList中提取结果集并迭代它。 结果集没有问题。
问题是尝试从Array中提取结果集,因此我无法做到 resultSet = GUIsidearray.get(0);不起作用,因此我不能这样做 而(resultSet.next())。
请参阅下面的一些代码示例。 任何帮助将不胜感激。
public void updateLocal(ArrayList<ArrayList<Object>> GUIsidearray) {
System.out.println("Get passed Array Value " + GUIsidearray.get(0));
// Shown in console -> Get passed Array Value
// [sun.jdbc.odbc.JdbcOdbcResultSet@1adc30] //
ResultSet resultSet
resultSet = GUIsidearray.get(0);
boolean emptyRs = true;
try {
while (resultSet.next()) {
emptyRs = false; // If ResultSet is empty
String Serno = (resultSet.getString("Serialnumber"));
System.out.println("Serial Number " + Serno);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:0)
我想你想要
while(resultSet.hasNext())
而不是
while(resultSet.next())
因为第一个返回一个布尔值,你实现的那个返回resultSet的下一个元素。
答案 1 :(得分:0)
请注意印刷表示如何:
[sun.jdbc.odbc.JdbcOdbcResultSet@1adc30]
而不是这个:
sun.jdbc.odbc.JdbcOdbcResultSet@1adc30
这表明您尝试访问的ResultSet
是内部列表的第一个元素。所以这应该有效:
ResultSet resultSet = (ResultSet) GUIsidearray.get(0).get(0);
请注意,几乎肯定有更好的方法来获取ResultSet
。如果没有完整的例子,很难说;你可能会让事情变得比他们需要的更复杂。提示:告诉我们GUIsidearray
来自哪里。