我遇到了一个问题,必须在数据库上运行许多不同的查询(不同的返回类型、不同的列数等)。
在撰写本文时,我开始怀疑是否有编写辅助函数的正确方法。
看起来很容易编写一个返回 ResultSet
的函数。
然而,因为它 a) 不关闭连接 b) 不关闭结果集,所以它似乎是一个可能有效但不正确的解决方案。是否有任何地方可以转储所有结果,以便它们可以安全返回。
(我唯一能想到的就是返回一个二维字符串数组(在将所有数据转换为字符串之后)然后将其全部转换回来)
编辑: 抱歉没有写清楚,想知道是否有任何方法可以按原样存储查询结果(不需要修改它)而无需为每个单独的方法编写可能的返回类型。
二维字符串列表背后的想法是能够按原样存储查询值。
Col1 Row1 | Col2 Row1 | Col3 Row1
Col1 Row2 | Col2 Row2 | Col3 Row2
编辑 2 感谢您的回复,我想我会为它编写一个小的解析器。
最佳答案
您不应该返回结果集,您应该将结果集中的结果读入某种容器对象。 ResultSet 是数据库游标的包装器,它会在连接关闭时消失。它是您读取并立即关闭的内容,而不是您可以在应用程序中传递的内容。
看看spring-jdbc是怎么做的。您实现一个传递给 JdbcTemplate 上的方法的 resultSetMapper。
几个观察结果:
您不需要使用 Spring 来使用 spring-jdbc。但是,我认为自己重新实现这些东西的值(value)很小。
读取 ResultSet 以打开和关闭连接不是代码的工作,它需要在其他地方进行。
关于java - 在 Java 中使用结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089301/