查询语句多写一个,java的Recordset和asp的RecordSet不一样,不能直接求出记录个数。第二种方法是在循环中设一变量i,在循环中求i++即可

解决方案 »

  1.   

    sql语句用select count(*) from...
      

  2.   

    1。sql语句根据提交的条件组合而成,再写sql不合适。
    2。每次都循环,效率会不会太低了?
    有没有更好的方法,我查了半天,java 中居然没有rs.recordcount类是
    的写法
      

  3.   

    rs.last();
    int numberOfRows = rs.getRow();
      

  4.   

    rs.last();
    int numberOfRows = rs.getRow();
    出错:
    org.apache.jasper.JasperException: Result set type is TYPE_FORWARD_ONLY
    请教回复人: crazyyoung(浪淘沙) ( ) 什么原因?
     小弟刚学jsp,还请各位高手指点
      

  5.   

    不会呀!为了使数据库具有可移植性,所以一般不直接使用RecordSet而是将结果集保存再一个Vector中(早期jdk)。这样效率也不低,并且你所要求的东西都能实现。并且分页更方便。需要的话可以给你一个例子
      

  6.   

    谢谢,我的mail [email protected]
     另外:我的
     Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    定义为滚动数据集,应该可以用rs.last()的,
     我用jsp+javabean实现的,stmt在javabean 中定义。
      

  7.   

    同意楼上的观点
    conn.createStatementResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
      

  8.   

    贴出全部代码,望高手指点
    //opendb.java
     package opendb; 
    import java.sql.*;public class opendb {    
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver"; 
    String sConnStr="jdbc:odbc:711";
    Connection conn=null;
    ResultSet rs=null; public opendb() {
    try
    {
    Class.forName(sDBDriver);
    }
    catch (java.lang.ClassNotFoundException e)
    {
    System.err.println("opendb():"+e.getMessage());
    }
    } public ResultSet executeQuery(String sql) {
    rs=null;
    try
    {
    conn=DriverManager.getConnection(sConnStr);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs=stmt.executeQuery(sql);
    }
    catch (SQLException ex)
    {
    System.err.println("aq.executeQuery:"+ex.getMessage());
    }
    return rs;
    }
    }
    //query.jsp
    <%@ page language = "java" import = "java.sql.*" %>
    <jsp:useBean id = "work" class = "opendb.opendb" scope = "page"/><html>
    <body>
    <!--INPUT TYPE="text" NAME="zx01" -->
    <!-- INPUT TYPE="submit" name = "submit" value = "query" -->
    <TABLE>
    <TR>
    <TD>zx01</TD>
    <TD>zx03</TD>
    <TD>zx04</TD>
    </TR>
    <%
      String mysql;
    //  String zx01 = request.getParameter("zx01");
      mysql = "select zx01,zx03,zx04 from zx_file where zx01 matches 'it*' ";
      out.println(mysql);
      ResultSet rs1 = work.executeQuery(mysql);
      rs1.last();
      int numberOfRows = rs1.getRow();
     // out.println(numberOfRows);
      while(rs1.next())
      {
    %>
    <TR>
    <TD><%out.println(rs1.getString("zx01"));%></TD>
    <TD><%out.println(rs1.getString("zx03"));%></TD>
    <TD><%out.println(rs1.getString("zx04"));%></TD>
    </TR>
    <%
      }
      rs1.close();
    %>
    </TABLE>
    </body>
    </html>
      

  9.   

    1.使用数据库sql函数,count(*)
    2.遍历记录集
      

  10.   

    在你的bean里面增加public int countnum()
    {
        i=0;
        while(rs.next())
        {
            i++;
        }
        rs.frist();             //复位
        return i;
    }在jsp里调用即可   int count=work.countnum();
      

  11.   

    初学时不要用现成的程序,封装Vector的就是