如何把ResultSet中的指针放到指定的位置        
            int size=0;
    try{
                while(rs.next()){
             size+=1;
            }  
            }catch(SQLException e){
              System.out.println(e.toString());
            } 
这段程序执行后,rs的指针是否已经在最后一行了。如何把指针再放回到初始位置呢?

解决方案 »

  1.   

    RS.isBeforeFirst() //是否最前一行
    RS.isAfterLast()   //是否最后一行
    RS.beforeFirst();  //回到最前一行
      

  2.   

    到最后一行了。
    rs.first()可以移动,但与记录集类型有关,有的是不能返回的
      

  3.   

    boolean absolute(int row) 将指针移动到此 ResultSet 对象的给定行编号 
     void afterLast() 将指针移动到此 ResultSet 对象的末尾,正好位于最后一行之后
     void beforeFirst() 将指针移动到此 ResultSet 对象的开头,正好位于第一行之前 
     boolean first() 将指针移动到此 ResultSet 对象的第一行
      

  4.   

    boolean absolute(int row) 将指针移动到此 ResultSet 对象的给定行编号 
     void afterLast() 将指针移动到此 ResultSet 对象的末尾,正好位于最后一行之后
     void beforeFirst() 将指针移动到此 ResultSet 对象的开头,正好位于第一行之前 
     boolean first() 将指针移动到此 ResultSet 对象的第一行
      

  5.   

    try{
         if(rs.isLast())
            System.out.println("aaaaaaaaaa");
         else
            System.out.println("nnnnnnnnnn");
        }catch(SQLException e){
                  System.out.println(e.toString());
                }
    我试了一下,错误:unsupported method:ResultSet.isLast。每次我在用rs的一些方法时,比如afterLast() 、first() 之类的,都会出现类似的错误。能告诉我怎么用么?
      

  6.   

    可是我在用JCreator时可以引用出来啊
      

  7.   

    在生成ResultSet之前也要将它设置成可滚动啊
      

  8.   

    跟数据库驱动和获得Statement对象时指定的参数有关系有些驱动不支持这个操作,尽量使用版本比较新的数据库驱动程序Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)
    这里面的参数会有影响static int TYPE_FORWARD_ONLY
              The constant indicating the type for a ResultSet object whose cursor may       move only forward.
    static int TYPE_SCROLL_INSENSITIVE
              The constant indicating the type for a ResultSet object that is scrollable but generally not sensitive to changes made by others.
    static int TYPE_SCROLL_SENSITIVE
              The constant indicating the type for a ResultSet object that is scrollable and generally sensitive to changes made by others.
      

  9.   

    跟数据库驱动和获得Statement对象时指定的参数有关系有些驱动不支持这个操作,尽量使用版本比较新的数据库驱动程序Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)
    这里面的参数会有影响static int TYPE_FORWARD_ONLY
              The constant indicating the type for a ResultSet object whose cursor may       move only forward.
    static int TYPE_SCROLL_INSENSITIVE
              The constant indicating the type for a ResultSet object that is scrollable but generally not sensitive to changes made by others.
    static int TYPE_SCROLL_SENSITIVE
              The constant indicating the type for a ResultSet object that is scrollable and generally sensitive to changes made by others.
      

  10.   

    Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)
    主要是在创建statement的时候要指定产生的结果是否可以来回的读取
      

  11.   

    问题解决了。就是因为我在连接数据库中的类写的有问题。
    把原来的stmt=conn.createStatement();
    改成stmt=conn.createStatement=(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    再把代码改为:就可以了
    package aaa;
    import java.sql.*;public class a111{
    public static void main(String[] args){

    javaConnectToSql jcts=new javaConnectToSql();
    jcts.Conn("com.microsoft.jdbc.sqlserver.SQLServerDriver","jdbc:microsoft:sqlserver://localhost:1433;databaseName=biyesheji","sa","");

        ResultSet rs=null;
        rs=jcts.QuerySql("select * from historyInfo where flag=0");
        int size=0;
        try{
                    while(rs.next()){
                 size+=1;
                }  
                      
                }catch(SQLException e){
                  System.out.println(e.toString());
                } 
            System.out.println(size);//得到size=3;
        
        try{
         rs.beforeFirst();
         if(size>0){
         while(rs.next()){
         System.out.println(rs.getString(1));
         }
         }
         else{
         while(rs.next()){
         System.out.println(rs.getString(2));
         }
        
         }
        
        }catch(SQLException e){
         System.out.println(e.toString());
        }
    }
    }谢谢各位!!!!!!!!!!!