gpt4 book ai didi

java - 如何将一种方法的executeQuery()的结果集用于不同的方法

转载 作者:行者123 更新时间:2023-12-01 09:54:40 25 4
gpt4 key购买 nike

我有一个名为 ExecuteQuery 的方法,它负责执行查询。它的定义为:

public int ExecuteQuery(String itemCode) {
ps = jdbcConnection.prepareStatement(SomeQuery);
rs = ps.executeQuery();
}

我想使用三种不同的方法来使用相同的结果集。显然,我不想三次执行相同的查询,因为它会影响我的时间复杂度。

 private Map<String, ItemRelation> loadItemRelations(String itemCode) throws PosfException {
Map<String, ItemRelation> relations = new LinkedHashMap<String, ItemRelation>();

try {

**while (rs.next()) {**

如何在此函数中使用rs,以便它循环执行 rs=ps.executeQuery(); 时得到的结果

我有三个函数需要相同的查询结果来执行不同的操作。

最佳答案

您有两个选择:

  1. 通常,结果集是 TYPE_FORWARD_ONLY 。将其更改为 TYPE_SCROLL_INSENSITIVE (或 TYPE_SCROLL_SENSITIVE )通过在 prepareStatement() 上指定该选项称呼。这样你就可以调用 beforeFirst() 将 ResultSet 重置到开头并再次迭代。

  2. 加载 ResulSet 中的所有行进入内存,例如作为List<MyRowClass> 。然后,您可以根据需要多次迭代该列表,并将 JDBC 调用隔离到一个位置。优点:列值是类型化的,处理基元的空值 ( wasNull() ) 之类的事情只需在一处完成。

我建议选择选项 2。

关于java - 如何将一种方法的executeQuery()的结果集用于不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37338189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com