java - 在 Java 中使用结果集

标签 java sql jdbc resultset

我遇到了一个问题,必须在数据库上运行许多不同的查询(不同的返回类型、不同的列数等)。 在撰写本文时,我开始怀疑是否有编写辅助函数的正确方法。 看起来很容易编写一个返回 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/

相关文章:

java - Hibernate Criteria with Projections.groupProperty 无法返回完整的 hibernate 对象 (ClassCastException)

java - 我只需要存储信用卡的最后 4 位数字

sql - CHECK (table1.integer >= table2.integer)

mysql - Rails 和参照完整性

java - JDBC 参数 verifyServerCertificate=false 无需客户端 keystore 和信任库即可连接

java - 使用 Ortho2D 在 OpenGL 中映射四边形纹理时出现问题

java - 如何检测Dataverse表记录的变化

mysql 比较特定日期

java - 使用 JDBC 连接到 postgres 时是否可以指定架构?

java - 两个应用程序使用 JDBC 连接到 mysql 数据库 : one works,,另一个给出 "The Network Adapter could not establish the connection"