jsp:由rs.last()方法不可用,学习ResultSet游标笔记 .

来源:互联网 发布:parsley.js 中文提示 编辑:程序博客网 时间:2024/05/01 06:20

问题起因:
今天学习做一个文章列表翻页的程序需要获得数据集中的数据总行数
我用的方法如下:
--------------------------------------------------
int RowCount = 0;
rs.last();
RowCount= rs.getRow();
//移动到最后检索当前行编号获取总行数 。
out.print("总行数:" + RowCount + "<br/>");
//out.print("isLast:" + rs.isLast() + "<br/>");
//out.print("isAfterLast:" + rs.isAfterLast() + "<br/>");
rs.beforeFirst(); //便于后面输出数据
---------------------------------------------------
执行到rs.last()时候就提示不支持这个方法!
[Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last  

资料分析:
=============================游标只读向前================================
java.sql
接口:Connection
方法:createStatement
Statement createStatement()
               throws SQLException
创建一个 Statement 对象来将 SQL 语句发送到数据库。
没有参数的 SQL 语句通常使用 Statement 对象执行。
如果多次执行相同的 SQL 语句使用 PreparedStatement 对象可能更有效。
使用返回的 Statement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY
并带有 CONCUR_READ_ONLY 并发级别。[---注意这里默认是只读向前的游标]

返回:
一个新的默认 Statement 对象
抛出:
SQLException - 如果发生数据库访问错误

===========================游标自定义======================================
java.sql
接口:Connection
方法:createStatement
Statement createStatement(int resultSetType,
                            int resultSetConcurrency)
                            throws SQLException
创建一个 Statement 对象该对象将生成具有

给定类型和并发性的 ResultSet 对象。此方法与上述 createStatement 方法相同但它允许重写

默认结果集类型和并发性。

参数:
resultSetType - 结果集类型它是
---ResultSet.TYPE_FORWARD_ONLY、 //游标向前
---ResultSet.TYPE_SCROLL_INSENSITIVE 或 //该常量指示可滚动但通常不受其他的更改影响的rs类型
---ResultSet.TYPE_SCROLL_SENSITIVE 之一//常量指示可滚动并且通常受其他的更改影响的rs类型。

resultSetConcurrency - 并发类型;它是
---ResultSet.CONCUR_READ_ONLY 或     //只读
---ResultSet.CONCUR_UPDATABLE 之一 //可以修改
返回:
一个新的 Statement 对象该对象将生成具有给定类型和并发性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误或者给定参数不是指示类型和并发性的 ResultSet 常量
从以下版本开始:
1.2

解决办法:

在创建Statement对象时指定游标参数
conn = DriverManager.getConnection(getConnectionUrl(),dbUserName,dbPassword);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);


原创粉丝点击