我遇到了一个问题,就是必须在DB上运行许多不同的查询(不同的返回类型、不同的列数等等)。当我写这篇文章时,我开始怀疑是否有一种正确的方法来编写帮助函数。似乎编写返回ResultSet的函数非常容易。
但是,由于它( a)不关闭连接( b)不关闭结果集,这似乎是一种可行的解决方案,但不正确。是否有任何地方可以转储所有的结果,以便他们可以安全地返回。
(我唯一能想到的就是返回一个2D字符串数组(在将所有数据转换为字符串之后),然后将其全部转换回来)。
编辑:很抱歉写得不清楚,我想知道是否有任何方法可以按原样存储查询结果(不需要修改),而不为每种可能的返回类型编写单独的方法。
2d字符串列表的思想是能够按原样存储查询值。
Col1 Row1 | Col2 Row1 | Col3 Row1
Col1 Row2 | Col2 Row2 | Col3 Row2编辑2谢谢您的回复,我想我只需要为它编写一个小的解析器。
发布于 2013-06-13 14:28:54
您可以编写解析ResultSet并将其转换为ArrayList或数组甚至对象字段的助手函数。例如,假设您有一个订单表,然后查询返回特定用户(客户)的该表的所有行。然后我们可以做这样的事情:
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 (或语句)和数据库连接。
https://stackoverflow.com/questions/17089301
复制相似问题