java - 需要 Java 中 ResultSet 的帮助

标签 java jdbc resultset

我正在使用 ResultSet 从我的 SQL 服务器检索数据。代码如下所示:

ResultSet rs = getValueFormTable();

我正在像这样遍历 ResultSet:

do{
   // process data
} while(rs.next());

假设有 10 条记录,我在 ResultSet 的第四个值。出现这种情况,我需要再次取第五个 ResultSet 记录的一个值返回到第四个 Resultset 记录。

这可能吗?

最佳答案

Suppose there are 10 records and i am in fourth ResultSet Value. There comes the situation that i need to need take one value of the fifth ResultSet again return back to the fourth Resultset. Is that possible in java?

您需要“可滚动的”ResulSet 实例来实现滚动结果集;如果您需要更新以前的结果集,那么您需要可滚动和可更新的结果集(最后一段讨论了可更新的结果集)。通常,ResultSetTYPE_FORWARD_ONLY并且只能使用 next() 方法向前滚动。

您需要创建类型为 TYPE_SCROLL_INSENSITIVEResultSet 实例或 TYPE_SCROLL_SENSITIVE调用其他方法,如 absolute()previous() 来回移动 ResultSet

创建可滚动的 ResultSet 需要您指定 StatementPreparedStatement 对象返回的 ResultSet 的类型,因为默认类型是 TYPE_FORWARD_ONLY 如前所述。下面显示了一个演示如何执行此操作的代码段:

PreparedStatement pStmt = Connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pStmt.executeQuery();
...
// You can now invoke rs.previous(), rs.absolute(n) etc. to move back and forth.

您可能想要阅读如何在 Connection.createStatement 中指定结果集的类型。 , Connection.prepareStatementConnection.prepareCall方法。

如果您想修改 ResultSet 的内容而不仅仅是从中读取,那么您将需要创建“可更新的”ResultSet。这很容易完成,只需将 ResultSet 并发类型指定为 CONCUR_UPDATABLE .然后您可以调用任何 updateXXX 方法并在它们后面加上 updateRow。更新底层数据源的方法。

关于java - 需要 Java 中 ResultSet 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871641/

相关文章:

java - Selenium 测试在谷歌反向查找时自动完成失败

java - JDBC 日期到 SQL 日期

java - SQL Java更新记录问题

mysql - 需要一个MYSQL查询来比较两个表并且只输出不匹配的结果

oracle - 在 R 中调用 Oracle 存储过程 - 如何获取结果集?

使用 jdbc 时泛型类型的 java 反射

java - 如何检查一个数字是否以任何顺序包含自己?

Java - 为过滤功能创建循环

java - 如何在 jsonb postgresql 中查询并转换为谓词 JPA

spring - 如何从 application.properties 文件设置 h2.jdbc?