ResultSet中的Java JDBC First()不起作用?

时间:2012-03-25 01:42:09

标签: java

您好我有问题我想将光标的位置更改为第一行,但我不知道为什么我的代码无效。当我添加rs2.first()时:

并且我也得到了这个错误:

此方法只应在可滚动的ResultSet对象上调用(类型TYPE_SCROLL_INSENSITIVE)。

        try{                    
      String driver = "org.apache.derby.jdbc.ClientDriver";
      Class.forName(driver).newInstance();
      String url = "jdbc:derby://localhost:1527/test";
      Connection conn = DriverManager.getConnection(url);
      String query = "select * from APP.RANKING";
      Statement stmt = conn.createStatement();
      Statement stmt2 = conn.createStatement();
      ResultSet rs = stmt.executeQuery(query);
      ResultSet rs2 = stmt2.executeQuery(query);
      while (rs.next()){             
          String BID = rs.getString("BALLOT_ID");
          String CN = rs.getString("CANDIDATE_NAME");
          String ROID = rs.getString("USER_ID");
          Ro1_ID = ROID;
          String RA = rs.getString("RANK");
          int rowNum = rs.getRow();
          int rowNum2;
          boolean In_check = false;
          while(rs2.next()){               
                  In_ballot.addElement(BID);  

                }

          rs2.First();
          In_ballot.addElement(BID);  
              }

         }
    catch(Throwable e) {
                System.err.println(e.getMessage());        
                }
    this.InB_list.setModel(In_ballot);

由于

1 个答案:

答案 0 :(得分:3)

默认情况下,在连接中调用createStament()会导致每个ResultSet类型为“TYPE_FORWARD_ONLY” - 这会导致您使用first()看到异常。

相反,请使用其他版本的createStatement,例如this one

This sample在德比中创建可滚动的ResultSet可能会有所帮助。