这是一个比较头疼的问题!
如果使用jdbc1.0的驱动,在rs中只能作rs.next()而且到了最后无法在返回头条记录.也就是说只能遍历一遍.如果再去使用rs.会抛出resultSet已经用尽的excpetion(Oracle).
但在jdbc2.0中已经加入对rs reset的功能.
在jdk1.4中javax.sql已经最为标准发到rt.jar中了.可惜现在还是beta
所以说:最终要看你使用的jdbc的驱动到底是符合jdbc1.0还是2.0.
如果 支持2.0的话,就要查jdbc的api.而不能只查jdk的api.

解决方案 »

  1.   

    主要的问题是我用的是prepareCall调用的sp,用CallableStatement,如果是createStatement是可以的。
      

  2.   

    如果使用java.sql包中api好像无法实现.
    通过javax.sql包中的api.有一个RowSet可以实现
      

  3.   

    可以告诉用发么?我没有api查 :(:(
      

  4.   

    可以告诉怎么用么?我没有api查 :(:( 
      

  5.   

    看这个:(
    sqlCon = java.sql.DriverManager.getConnection(strCon,"cap","cap");
    sqlCon.setAutoCommit(false);
    //准备SQL语句
    strSQL = "select * from table";
    //准备可调用语句对象
    sqlStmt = sqlCon.prepareCall(strSQL);
    rs=sqlStmt.executeQuery();这个rs不能rs.next,rs.first...怎么解决?
      

  6.   

    当然能调用啦!
    因为prepareCall只能调用ps的啊.
    如果要调用select * from table 的话.只能用
    java.sql.Statement s = sqlCon.createStatement();
    rs = s.execute(strSQL);
    你现在无法调用rs.next是因为你的rs根本就是null 
    \.
      

  7.   

    当然不能调用啦!
    因为prepareCall只能调用ps(存储过程的名称)的啊.
    如果要调用select * from table 的话.只能用
    java.sql.Statement s = sqlCon.createStatement();
    rs = s.execute(strSQL);
    你现在无法调用rs.next是因为你的rs根本就是null 
      

  8.   

    作如下程序判断
    if (rs == null )
    {
      if ( rs.next()) 
     {
      作逻辑处理
     }
     else
     {
       System.out.println("记录中不包含任何一条数据");
     }}
    {
      throw new Excpetion("rs is null");
    }
      

  9.   

    这些都可以的,rs.next是可以的,但是如果我想去记录总数的话,那么我还要用while(rs.next())???
    不能rs.last(),rs.getRow()这样?
      

  10.   

    rs只能作一次遍历!!!!不能回复.你只有定义一个int变量再每次rs.next()后加1.
      

  11.   

    你的问题是没有你所想的那种api来给你直接解决的.除非你用的是支持jdbc2.0的驱动.
    写java程序不是写pb,vb