我正在使用 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
实例来实现滚动结果集;如果您需要更新以前的结果集,那么您需要可滚动和可更新的结果集(最后一段讨论了可更新的结果集)。通常,ResultSet
是 TYPE_FORWARD_ONLY
并且只能使用 next()
方法向前滚动。
您需要创建类型为 TYPE_SCROLL_INSENSITIVE
的 ResultSet
实例或 TYPE_SCROLL_SENSITIVE
调用其他方法,如 absolute()
和 previous()
来回移动 ResultSet
。
创建可滚动的 ResultSet
需要您指定 Statement
或 PreparedStatement
对象返回的 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.prepareStatement
和 Connection.prepareCall
方法。
如果您想修改 ResultSet
的内容而不仅仅是从中读取,那么您将需要创建“可更新的”ResultSet。这很容易完成,只需将 ResultSet 并发类型指定为 CONCUR_UPDATABLE
.然后您可以调用任何 updateXXX
方法并在它们后面加上 updateRow
。更新底层数据源的方法。
关于java - 需要 Java 中 ResultSet 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871641/