列总数的取得为:
ResultSetMetaData metadata=inrst.getMetaData();
colNumber=metadata.getColumnCount();行总数的方法呢?

解决方案 »

  1.   

    先调用last(),然后有个getRow之类的方法的,或者你next循环计数
      

  2.   

    先rs.last() 然后int num=rs.getRow();
    或者你数据库的时候用存储过程直接返回一个行的个数就行了
      

  3.   


    JDBC
    好。。弱小
    ADO: rs.rowcount;
      

  4.   

    kaper() ( ) 信誉:100    Blog  2007-1-13 22:39:09  得分: 0  
     
     
       

    JDBC
    好。。弱小
    ADO: rs.rowcount;  
     
    Top  
     rs有这个属性?学习一下,不过楼注可以自己写一个
    int i = 0;
    while(rs.next)
    {
          i++;
    }
      

  5.   

    先rs.last() 然后int num=rs.getRow();
    或者你数据库的时候用存储过程直接返回一个行的个数就行了
    楼上说的这个方法比较合理!
      

  6.   

    rs.last() 之后还能再把游标指到首行从首行读数据吗?
      

  7.   

    调用last方法好像不太可取,如果从数据库中取出的结果设置可前可后移动,势必影响效率,而且Oracle中默认是不能前后移动的。我采用得方法是先将数据集中的结果挨个获得保存到一个ArrayList中,然后获得其size
      

  8.   

    全部存放到ArrayList显然是不可取的,数据库存放的数据量如果很大,明显会有问题的
      

  9.   

    package com;
    import java.sql.*;
    import java.util.ArrayList;public class ReadSQL {
    public ReadSQL(){}
    public ResultSet SQLT() {
        ResultSet rst=null;
        try {
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
          Connection con = java.sql.DriverManager.getConnection
              ("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dfl_zzm",
               "sa", "sa");
          Statement stmt = con.createStatement();
          rst = stmt.executeQuery("select * from TPeopleInfo");
        }
        catch (ClassNotFoundException e) {
          System.out.println(e);
        }
        catch (SQLException e) {
          System.out.println("SQL not found!");}
         catch (InstantiationException e) {
         System.out.println("SQL not found!");
        }
        catch (IllegalAccessException e) {
        System.out.println("SQL not found!");
       }
        return rst;
      }
    //把数据转成二维数组形式,好传到客户端
    public String[][] RSql(ResultSet inrst){
    ArrayList<String[]> RSqlAL=new ArrayList<String[]>();
    String str[];
    String OutRSql[][];
    int colNumber=0;
    //int rowNumber=0;
    try {
    ResultSetMetaData metadata=inrst.getMetaData();
    //得到列数
    colNumber=metadata.getColumnCount();
    while(inrst.next()){
    str=new String[colNumber];
    for (int i=0; i<colNumber;i++){
    str[i]=inrst.getString(i+1);
    }
    RSqlAL.add(str);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    //数据转入数组,以便传送到客户端
    OutRSql=new String[RSqlAL.size()][colNumber];
    for (int i=0;i<RSqlAL.size();i++){
    for(int j=0;j<colNumber;j++){
    OutRSql[i][j]=((String[])(RSqlAL.get(i)))[j];
    }
    }
    //打印显示
    for(int i=0;i<OutRSql.length;i++){
       for(int j =0;j<colNumber;j++){
       System.out.print(OutRSql[i][j]+" ");
       }
       System.out.println();
       }
    return OutRSql;
    }
    public static void main(String []args) throws SQLException {
        ReadSQL ss=new ReadSQL();
        ResultSet res=ss.SQLT();    
        ss.RSql(res);
      
      }}
      

  10.   

    ADO确实有那个属性。
    不过JDBC没有。
    还有我觉得效率最高的办法是专门写SQL来判断!
    就是把你要运行的SQL
    从Select 到 From 之间改为
    count(*)
    这样的效率最高。