上面的代码实际运行时大部分时间是正确的,能够正常执行!但tomcat的日志里总是纪录这个类的抛出异常
DBConn.getRowQuery: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error setting up static cursor cache
DBConn.getRowQuery: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error setting up static cursor cache
rs.last()是直接到行的最后一条记录,可以不要,直接
while(rs.next()){
...
}进行查询
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
能把rs关闭么?
...
}进行查询
rs.last() 不能关闭 rs
你在页面调用方法后,应该关闭一下 rs 吧
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;
}
ResultSet.CONCUR_UPDATABLE);
看看连接的概念
好像有几种连接的
其中一中就是楼主写的这个,会产生有指针的记录集
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好像也自己写了一个据说也不错的。
具体要根据程序的需要来设定Recordset的类型。
还有一个问题,好像楼主没有关闭记录集。
rs.close();