ResultSet如何把它放到一个ArrayList中

新手上路,请多包涵

“ResultSet”是否被视为 ArrayList?我说的是 jdbc。如果不是,那么我如何使用从我的数据库中获取的信息

while (result.next()) {
....

}

将语法转换为名为 hotelResult 的 ArrayList?

我希望这是可以理解的。

原文由 Adem Ökmen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 846
2 个回答

不,ResultSet 不被视为 ArrayList,而是一个表。例如,如果 hotelResult 的类型为字符串,您可以用这段代码填充列表(如果 ResultSet 中的列是字符串)。

 while(result.next()) {
  hotelResult.add(result.getString("Enter the columnname here");
}

对于每种数据类型,都有一种从 ResultSet 中获取值的方法。在 Java API 中查找不同类型的方法。

原文由 Bart1612 发布,翻译遵循 CC BY-SA 3.0 许可协议

ResultSet 不是 ArrayList。相反,它是一个特殊的对象(接口),用于保存通过 JDBC 连接查询检索到的数据。

ResultSet 对象无法更新,只能向前遍历……不能向后遍历。默认情况下,您只能从第一行到最后一行迭代它一次(尽管通过一些编码,您可以生成一个可以双向编辑和遍历的 ResultSet 对象)。

存储在 ResultSet 对象中的记录可以很容易地放在 ArrayList 中。以下是有关如何执行此操作的示例:

 Connection con = ... ;
Statement stmt = ... ;
ResultSet results = stmt.executeQuery("...");

//Stores properties of a ResultSet object, including column count
ResultSetMetaData rsmd = results.getMetaData();
int columnCount = rsmd.getColumnCount();

ArrayList<String> hotelResultList = new ArrayList<>(columnCount);
while (results.next()) {
   int i = 1;
   while(i <= columnCount) {
        hotelResultList.add(results.getString(i++));
   }
}

注意:此示例假设在查询中返回单个字符串,例如酒店名称。您可能希望保存关于每家酒店的多条数据,在这种情况下,您将创建一个“酒店”对象,然后创建 ArrayList 作为酒店对象列表。通过使用行映射器,每个酒店对象都可以填充相关数据。

此外,使用一种流行的 JDBC 框架来处理 JDBC 连接、查询和结果集可以进一步简化该过程。

原文由 Michael M 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题