首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中使用ResultSets

在Java中使用ResultSets
EN

Stack Overflow用户
提问于 2013-06-13 14:11:27
回答 3查看 3.9K关注 0票数 3

我遇到了一个问题,就是必须在DB上运行许多不同的查询(不同的返回类型、不同的列数等等)。当我写这篇文章时,我开始怀疑是否有一种正确的方法来编写帮助函数。似乎编写返回ResultSet的函数非常容易。

但是,由于它( a)不关闭连接( b)不关闭结果集,这似乎是一种可行的解决方案,但不正确。是否有任何地方可以转储所有的结果,以便他们可以安全地返回。

(我唯一能想到的就是返回一个2D字符串数组(在将所有数据转换为字符串之后),然后将其全部转换回来)。

编辑:很抱歉写得不清楚,我想知道是否有任何方法可以按原样存储查询结果(不需要修改),而不为每种可能的返回类型编写单独的方法。

2d字符串列表的思想是能够按原样存储查询值。

代码语言:javascript
复制
Col1 Row1 | Col2 Row1 | Col3 Row1
Col1 Row2 | Col2 Row2 | Col3 Row2

编辑2谢谢您的回复,我想我只需要为它编写一个小的解析器。

EN

Stack Overflow用户

发布于 2013-06-13 14:28:54

您可以编写解析ResultSet并将其转换为ArrayList或数组甚至对象字段的助手函数。例如,假设您有一个订单表,然后查询返回特定用户(客户)的该表的所有行。然后我们可以做这样的事情:

代码语言:javascript
复制
static List<Order> parseOrder(ResultSet rs) {
   ArrayList<Order> orderList = new ArrayList<>();
   while(rs.next() ) {
      Order order = new Order();
      order.setID(rs.getInt(1));
      order.setCustomerID(rs.getInt(2));
      order.setItemName(rs.getString(3));
      orderList.add(order);
  }
  return orderList;

}

简单地将结果集转换为一个由对象数组组成的数组可能会更通用,但可能不太有用。

我将由调用函数来关闭这个ResultSet,并可能关闭PreparedStatement (或语句)和数据库连接。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17089301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档