如果你的JDBC驱动支持JDBC2.0,可以用rs.first()
public boolean first() throws SQLException
JDBC 2.0 
Moves the cursor to the first row in the result set. 
Returns:
true if the cursor is on a valid row; false if there are no rows in the result set 
Throws: SQLException
if a database access error occurs or the result set type is TYPE_FORWARD_ONLY 

解决方案 »

  1.   

    rs.first() 不行,提示错误java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
    at sun.jdbc.odbc.JdbcOdbcResultSet.first(JdbcOdbcResultSet.java:2154)
    at _jcfx._xshzmx_0right1__jsp._jspService(e:\Inetpub\wwwroot\shoulou\jcfx\xshzmx_right1.jsp:190)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:476)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:277)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:337)
    at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:269)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)
      

  2.   

    说明你的JDBC不支持first();
    你的JDBC应该是JDBC1.1吧,升级为JDBC2.0就行了
      

  3.   

    怎样升级为JDBC2.0,小弟 刚学JSP,楼上的各位大哥能否告知在下?我用的是resin2.0  +  jdk1.3
      

  4.   

    到网上下载JDBC2.0的.jar文件。
    然后在classpath指定位置行了。
      

  5.   

    你再运行一次:stmt.executeQuery(sql)
    不又到了第一条啦!省事!
      

  6.   

    不能再用stmt.executeQuery(sql),程序中是一个循环
      

  7.   

    try
    {
     DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
     Connection conn =DriverManager.getConnection("jdbc:odbc:test","","");
     Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); String strSQL = "select name,age from test";  //执行SQL语句并获取结果集 
      ResultSet rs = stmt.executeQuery(strSQL);  
    if(rs.next())
    {
     rs.last();
     int totalRow=rs.getRow();
     }
    String[] str=new String[totalRow];
    rs.beforeFirst();
    int i=0;
    while(rs.next())
    {
    str[i]=rs.getString("name");
    i++;

    for(int n=0;n<i;n++)
    {
     out.println(str[n]);
     out.println("<br>");
    }rs.close();
    stmt.close();
    conn.close();}
    catch (Exception e) {}
      

  8.   

    Statement stmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
    ResultSet rs = stmt.executeQuery(strSQL);  
    if(rs.next())
    {
     rs.last();
     int totalRow=rs.getRow();
     }
    rs.beforeFirst();
    int i=0;
    while(rs.next())
    {
    str[i]=rs.getString("name");
    i++;
      

  9.   

    小草兄:我用的是JDBC1,所以不支持rs.first()、rs.last()等的,我想问的是如何升级JDBC,我不会配置,英语帮助看不懂。
      

  10.   

    加一个判断不就搞定!
    if(!rs.next())
      

  11.   

    快乐数据,
    while(rs.next()) 以后我要回到第一条,因为 while(rs.next()) 语句是在一个循环中,所以
    不能再执行一遍 ResultSet rs=stmt.executeQuery(SQL);
      

  12.   

    存成数组也可以移动的,最好升级到JDBC2
      

  13.   

    你在定义Statement stmt的时候改成以下这样,加上参数。
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    看看行不行
      

  14.   

    你的这个while(rs.next())不是要循环到表末么?
    那你还要回到第一条数据?你说说你的思路啦!
    我现在不理解你的思路,很难给你出熟主意啦!呵呵!!