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

问题起因:
今天学习做一个文章列表翻页的程序,需要获得数据集中的数据总行数
我用的方法如下:
--------------------------------------------------
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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ResultSet类提供了多种用于操作游标方法。其中一些方法包括: - next()方法用于将游标移动到结果集的下一行,并返回一个布尔值,指示是否有更多的行可用。 - previous()方法用于将游标移动到结果集的上一行。 - first()方法用于将游标移动到结果集的第一行。 - last()方法用于将游标移动到结果集的最后一行。 - absolute(int row)方法用于将游标移动到指定的行数。 - relative(int rows)方法用于将游标相对于当前位置移动指定的行数。 - isBeforeFirst()方法用于检查游标是否位于结果集的第一行之前。 - isAfterLast()方法用于检查游标是否位于结果集的最后一行之后。 - isLast()方法用于检查游标是否位于结果集的最后一行。 - getRow()方法用于返回当前游标所在行的编号。 这些方法可以帮助您在结果集中导航和操作数据。请注意,不同的游标类型可能支持不同的方法。例如,使用ResultSet.TYPE_SCROLL_INSENSITIVE游标类型,您可以使用上述所有方法进行导航和操作,而其他游标类型可能只支持部分方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ResultSet游标详解](https://blog.csdn.net/Explorer2017/article/details/104503380)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [JDBC编程resultset游标控制](https://download.csdn.net/download/hanoi2005/2723175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值