先用rs.next判断一下。没有数据时应该不会出现这个问题,不知道你用的是什么JDBC

解决方案 »

  1.   

    jsp中没有rs.last()这个用法,因为jsp中记录集指针单向,所以不能movefirst
    你的第二个问题,我也遇到了.不过我是这样得到记录条数的,int i=0;
    while(rs.next()&& i++)
    {
      i=i+1
    }
      

  2.   

    先判断有没有空
    if(rs.next())//不为空
    {
       rs.last();
    }
    else
    {
       error code
    }
      

  3.   

    wwwfwww(不懂电脑) 说的对,用jdbc:odbc用不了rs.last()和rs.first()
    我碰到取行数时都用int i=0;
    while(rs.next())
    {
    i=i+1;
    }
    然后i里就是所有的行数
    哈哈,是笨了些,但没其它办法,只要一用rs.last() rs.getRow()
    马上报错!
      

  4.   

    try:
    使用JDBC2.0中的:
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      

  5.   

    import java.sql.*;
    public class ScrollableResultSet
    {
    public static void main(String args[])
    {
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    //sDBDriver="org.gjt.mm.mysql.Driver";
    //sDBDriver = "com.inet.tds.TdsDriver";
    String sConnStr = "jdbc:odbc:jbbs";
    //sConnStr="jdbc:inetdae:wcsz?sql7=true";
       try
       {
       Class.forName(sDBDriver);    }
       catch(java.lang.ClassNotFoundException ae)
       {
       System.err.println("ae:"+ae.getMessage());
       }
        
    // sConnStr="jdbc:mysql://wcsz/forums?user=walksing&[email protected]&useUnicode=true&characterEncoding=gb2312";
     Connection con =null;
     
    Statement stmt;

    try
    { con = DriverManager.getConnection(sConnStr);
       //Statement stmt = con.createStatement();
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    //stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    String sql ="select * from [board]";
    //sql ="select * from addressbook";
    ResultSet srs = stmt.executeQuery(sql);
    srs.absolute(1);
    srs.relative(10);
    System.out.println("after last?" +srs.isAfterLast());
    int rowNum;
    if(!srs.isAfterLast())
    {
    String name=srs.getString("boardname");
    System.out.println(name+" "+"boardname");

    }

    //srs.afterLast();

    while(srs.previous())
    {
    System.out.print("after last?" +srs.isAfterLast());
    rowNum =srs.getRow();
    System.out.print(rowNum);
    System.out.print("rowNum");
    String name=srs.getString("boardname");
    System.out.println(name+" "+"boardname");
    }
    System.out.print("after last?" +srs.isAfterLast());
    rowNum =srs.getRow();
    System.out.println(rowNum);
    srs.close();
    stmt.close();
    con.close();

    }catch(BatchUpdateException b)
    {
    System.err.println("---BatchUpdateException---");
    System.err.println("SQLState: "+b.getSQLState());
    System.err.println("Message: "+b.getMessage());
    System.err.println("Vendor: "+b.getErrorCode());
    System.err.println("Update counts: ");
    int[] updateCounts = b.getUpdateCounts();
    for (int i=0;i<updateCounts.length;i++)
    {
    System.err.print(updateCounts[i]+" ");

    }
    System.out.println("");

    }catch(SQLException ex)
    {
    System.err.println("----SQLException-------");
    System.err.println("SQLState: "+ex.getSQLState());
    System.err.println("Message: "+ex.getMessage());
    System.err.println("Vendor: "+ex.getErrorCode());
    }

    }
    }
      

  6.   

    去掉:}catch(BatchUpdateException b)
    {
    System.err.println("---BatchUpdateException---");
    System.err.println("SQLState: "+b.getSQLState());
    System.err.println("Message: "+b.getMessage());
    System.err.println("Vendor: "+b.getErrorCode());
    System.err.println("Update counts: ");
    int[] updateCounts = b.getUpdateCounts();
    for (int i=0;i<updateCounts.length;i++)
    {
    System.err.print(updateCounts[i]+" ");

    }
    System.out.println("");