【问题标题】:How to store result set from sql statement in two different variable and use?如何将sql语句的结果集存储在两个不同的变量中并使用?
【发布时间】:2014-11-27 18:19:13
【问题描述】:

我想存储结果集分别存储两个不同的位置,分别使用。可以吗?

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 结果集。我怎样才能最简单地解决它?

【问题讨论】:

  • MySQL 标签与您的问题有什么关系?
  • @Anarki 其实我不想存储结果集值。我想在两个位置添加整个结果集内容。因为我想分别执行两个方法。
  • @Maduri 你的意思是你想用两种方法传递相同的结果集?
  • @MiyaG 是的。但我不知道怎么做。

标签: java sql resultset


【解决方案1】:

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

【讨论】:

  • 你的天才。你解决了我的大问题和宝贵的时间。一次又一次地感谢。祝你有美好的一天:) .
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多