簡體   English   中英

java.sql.SQLException:結果集開始之前

[英]java.sql.SQLException: Before start of result set

在這里,我附加了代碼,它顯示了如下錯誤:java.sql.SQLException:

在開始結果集之前,我在這里做錯了什么:

String qry = "SELECT * From register ";



stmt = (PreparedStatement) conn.prepareStatement(qry);
rs =  stmt.executeQuery();
while (rs.next()) {
    String area = rs.getString("city");
    if(city.equals(area)){
        System.out.println("!!!!!!It matched: " + city);
        String qry2="select state from register where city='"+city+"'";
        System.out.println(qry2);
        stmt = (PreparedStatement) conn.prepareStatement(qry2);
        rs =  stmt.executeQuery();
        String state=rs.getString("state");
        System.out.println("state: " + state);
        break;
    } else {
        //System.out.println("No match with: " + area);
    }
}

您可以在query1結果集循環內為query2使用新的ResultSet對象。

String qry2="select state from register where city='"+city+"'";
System.out.println(qry2);
stmt = (PreparedStatement) conn.prepareStatement(qry2);
ResultSet rs2 =  stmt.executeQuery();
String state=rs2.getString("state");

但通常最好使用JDBC資源來遍歷結果集1,收集返回的所有“城市”值,然后循環遍歷“城市”結果,並調用query2以獲得與狀態2相關聯的“狀態”。 “城市”而非您所展示的方式。

您的代碼中不需要第二個結果集。 都可以在同一結果集中找到。 您可以使用以下代碼:

String qry = "select * from register";
PreparedStatement stmt = (PreparedStatement) conn.prepareStatement(qry);
             rs =  stmt.executeQuery();
             while (rs.next()) {
                 String area = rs.getString("city");
                 if(city.equals(area)){
                    System.out.println("!!!!!!It matched: " + city);
                    String state=rs.getString("state");
                    System.out.println("state: " + state);
                    break;
                 } else {
                    //System.out.println("No match with: " + area);
                 }
           }

暫無
暫無

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

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