上面的代码实际运行时大部分时间是正确的,能够正常执行!但tomcat的日志里总是纪录这个类的抛出异常
DBConn.getRowQuery: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error setting up static cursor cache

解决方案 »

  1.   

    指针没有移动:rs.next()
    rs.last()是直接到行的最后一条记录,可以不要,直接
    while(rs.next()){
                      ...
                    }进行查询
      

  2.   

    http://tech.ccidnet.com/pub/article/c1110_a173155_p1.html
      

  3.   

    我把ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE去掉以后,所有用到该类的页面tomcat全部报错,如下:
    javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.first看来ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE是设置允许指针移动的,但是,我们现在一直用的都是本页顶部所写的方法,可每隔一段时间,tomcat就跑出这个类的异常,使用这个类的页面也不能正常打开,怀疑和这个类的写法有关。
    DBConn.getRowQuery: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error setting up static cursor cache
      

  4.   

    rs.last();
    能把rs关闭么?
      

  5.   

    while(rs.next()){
                      ...
                    }进行查询
    rs.last() 不能关闭 rs
      

  6.   

    你的rs 是个全局变量吧,
    你在页面调用方法后,应该关闭一下  rs 吧
      

  7.   

    这个方法是写在类里的public ResultSet getRowQuery(String sql) {
        try {
          conn = ds.getConnection();
          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
          rs = stmt.executeQuery(sql);
          rs.last();
          //closeConn();
        }
        catch (SQLException ex) {
          System.err.println("DBConn.getRowQuery: " + ex.getMessage());
        }
        finally {
          closeStmt();
          closeConn();
        }    return rs;
      }
      

  8.   

    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
    看看连接的概念
    好像有几种连接的
    其中一中就是楼主写的这个,会产生有指针的记录集
      

  9.   

    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE); 
    问题出在这个地方了,SQLServer 2000 Driver for JDBC不支持,可以滚动的更新了,请参考SQLServer 2000 Driver for JDBC的相关文档,看看其中那些是SQLServer 2000 Driver for JDBC不支持,建议你采用一个SQLServer 2000 Driver for JDBC支持的方法来处理问题,SQLServer 2000 Driver for JDBC有一些问题的,你SQLServer 2000 Driver for JDBC是从MS下载的吧,那个驱动有问题,还是使用第三方的吧,IBM在WSAD中所带的那个就不错的,那个Free的JTDS也行,BEA好像也自己写了一个据说也不错的。
      

  10.   

    默认是只读的,游标只能向前的。
    具体要根据程序的需要来设定Recordset的类型。
    还有一个问题,好像楼主没有关闭记录集。
    rs.close();