簡體   English   中英

如何在Java中兩次使用同一結果集

[英]How to use a same resultset twice in Java

我想兩次使用相同的結果集,一次是檢查它是否為空並根據結果執行代碼,然后,使用(resultset.next() ,第二個結果集將總是由於第一個結果而跳過一行組

到目前為止,這是我的代碼:

connection = DriverManager.getConnection(connection);
statement = (Statement) connection.createStatement();
resultset = statement.executeQuery(query);

String id = "0";
String idfromdb;

if(resultset.next() == false){
  System.out.println("table is empty")
  statement.executeUpdate(" INSERT INTO table VALUES ('value') ");
}

else{
  while(resultset.next()){
    idfromdb = resultset.getString("value")
    if(! idfromdb = id){
      System.out.println("no similar data has been found");
    }    
    else{
      System.out.println("similar data has been found");
    }
  }
}

當您調用resultset.next() ,它將獲取一條記錄,因此您需要調用previous()來重置游標

完整代碼:

boolean hasRecord = true;
if(!resultset.next()){// you are missing ) here
    System.out.println("table is empty")
    statement.executeUpdate(" INSERT INTO table VALUES ('value') ");
    hasRecord = false;
}
if(hasRecord){
   resultset.previous();//move to the previous record
}

更改為do-while循環:

if(resultset.next() == false{
    System.out.println("table is empty")
    statement.executeUpdate(" INSERT INTO table VALUES ('value') ");
} else {
  do  {
    idfromdb = resultset.getString("value")
    if(! idfromdb = id){
        System.out.println("no similar data has been found");
    }

    else{
        System.out.println("similar data has been found");
    }
  } while(resultset.next());
}

do-while在循環的底部而不是頂部評估其表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM