Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何运行Resultset.next()两次?_Java_Sql_Oracle_Jdbc_Resultset - Fatal编程技术网

Java 如何运行Resultset.next()两次?

Java 如何运行Resultset.next()两次?,java,sql,oracle,jdbc,resultset,Java,Sql,Oracle,Jdbc,Resultset,我有这个方法来获取一串行并打印它们 另外,我必须做两次while(Resultset.next())。第一个是获取行数,第二个是打印字符串。但是当该方法第一次运行Resultset.next()时,该方法将跳过第二次Resultset.next() 问题是,第一个Resultset.next()可以正常工作,但第二个不行 有人能解释一下原因吗?我怎样才能让它工作呢 注: 我知道,只需一个Resultset.next() 但我想做两次;) Secondrs.next()不起作用,因为在第一个循环中

我有这个方法来获取一串行并打印它们

另外,我必须做两次
while(Resultset.next())
。第一个是获取行数,第二个是打印字符串。但是当该方法第一次运行
Resultset.next()
时,该方法将跳过第二次
Resultset.next()

问题是,第一个
Resultset.next()
可以正常工作,但第二个不行

有人能解释一下原因吗?我怎样才能让它工作呢

注: 我知道,只需一个
Resultset.next()
但我想做两次;)

Second
rs.next()
不起作用,因为在第一个循环中rs已经到达结束位置

您可以将
re.next()
存储到临时变量中

例如
ResultSet tmpRs_1=rs
ResultSet tmpRs_2=rs

然后用这两个变量做两个循环

或者


您可以在单个循环中执行所有操作。这样您就不需要进行两次循环。

您可以如下初始化
语句

conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
因此,可以在语句中移动光标

现在,你可以循环通过它

while(re.next())
    num_row++;
re.beforeFirst();
但这是非常不必要的,最佳的解决方案是直接跳到集合的末尾并返回行

num_row = 0;
if(re.last()) {
   num_row = rs.getRow();
   re.beforeFirst();
}

你不能用一个循环,然后把两个操作都放在一个循环中吗?检查答案。为什么你不能只循环一次呢?对于您显示的代码,以这种方式单独计算没有意义。您不能这样做,因为
tmpRs_1
tmpRs_2
仍然是一个相同的
ResultSet
num_row = 0;
if(re.last()) {
   num_row = rs.getRow();
   re.beforeFirst();
}