如何将sql语句中的结果集存储在两个不同的变量中并使用?

时间:2014-11-27 18:19:13

标签: java sql resultset

我想分别存储结果集存储两个不同的位置并单独使用。这可能吗?

public void demo(){
    /* Result set got from the corpusSentenceRetrive method */
    ResultSet rsNew=corpusSentenceRetrive(wordAll);
    ArrayList<String> resultSetStore= new ArrayList<String>();

    for(int i=0;i<2;i++){
    resultSetStore.add(i,rsNew);
    }

    method1(resultSetStore.get(0));
    method2(resultSetStore(1));
}

public void method1(ResultSet rst){
    ResultSet rs = rst;
    while (rs.next()) {....}
}

public void method2(ResultSet rst){
    ResultSet rs = rst;
    while (rs.next()) {....}
}

为什么这不起作用?如何单独执行两个方法?因为一个方法执行while语句。我不能使用其他方法。得到0结果集。我怎样才能最简单地解决这个问题?

2 个答案:

答案 0 :(得分:1)

ResultSet包含您正在读取的位置的内部光标。因此,当调用第一个方法并完成时,光标位于可用结果的末尾。因此,当调用第二个方法时,没有结果要检查。在任一方法中使用结果之前,您可以在使用之前调用ResultSet.beforeFirst()以确保光标位于正确的位置。

答案 1 :(得分:0)

由于没有使用db值复制ResultSet的标准方法,因此您必须将数据存储在其他位置。大多数 ResultSet 实现不会将所有结果存储在其中,而只是保持与用于根据需要获取结果的数据库的连接。因此,请使用两个不同的结果集或将结果集的所有数据存储到任何其他数据结构,例如列表/地图等按照您的要求执行上述任务。

所以你不能两次使用相同的结果集。