`
xhpscdx
  • 浏览: 29150 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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);
分享到:
评论

相关推荐

    javaResultSet常用方法.pdf

    1. ResultSet.CONCUR_READ_ONLY:当前ResultSet对象只能读,不能更新。 2. ResultSet.CONCUR_UPDATABLE:当前ResultSet对象可以更新。 ResultSet常用方法 以下是ResultSet对象的常用方法: 1. 移动指针: * rs....

    ResultSet常用方法

    - `rs.first()` 和 `rs.last()`:分别将游标移动到结果集的第一行和最后一行。 - `rs.beforeFirst()` 和 `rs.afterLast()`:将游标置于结果集的第一行之前和最后一行之后。 2. **检查当前位置**: - `rs.isFirst...

    JDBC编程resultset游标控制

    JDBC通信原理 JDBC驱动类型 JDBC构成 JDBC程序5步走 滚动的结果集 可更新的结果集 SQL数据类型对应的Java类型 事务及批量处理 行集、连接池、LDAP

    jdbc结果集的名称定义

    - **方法**:`rs.last()` - **功能**:移动游标到结果集的最后一行。 - **示例**: ```java rs.last(); // 移动到最后一行 ``` 5. **获取当前位置(Getting Current Position)** - **方法**:`rs.getRow()`...

    达梦数据库驱动包:DmJdbcDriver18.jar

    ResultSet rs = stmt.executeQuery("SELECT * FROM Employees"); while (rs.next()) { System.out.println(rs.getInt("id") + ", " + rs.getString("name") + ", " + rs.getInt("age")); } ``` 5. **关闭资源*...

    java.sql.SQLException: 结果集已耗尽

    1. **循环遍历结果集时未正确检查结束条件**:最常见的情况是,程序员在for-each或while循环中遍历结果集,但没有在循环条件中检查`ResultSet.next()`的返回值。当`next()`返回false时,表示结果集已空,应停止遍历...

    java数据库连接ResultSet

    同时,用作 getXXX 方法的输入的列名不区分大小写。 另外,ResultSet还提供了获取列信息的方法,例如 getMetaData,可以用来获取 ResultSet 对象各列的编号、类型和属性。如果列名已知,但不知其索引,则可以使用 ...

    jsp连接数据库大全.pdf

    6. 执行SQL查询:`ResultSet rs=stmt.executeQuery(sql);` 7. 遍历结果集并显示数据:`while(rs.next()){ ... }` 8. 最后关闭资源:`rs.close(); stmt.close(); conn.close();` 接着,我们转向JSP连接SQL Server...

    JSP连接数据库.pdf

    【JSP连接数据库技术详解】 在Java服务器页面(JSP)中,连接数据库是一项基本操作,主要用于处理用户请求,检索或更新存储在数据库中的信息。本文将深入探讨两种常见的数据库连接方式:通过JDBC-ODBC桥接器连接...

    Cloudera_ImpalaJDBC41_2.5.36.zip

    ResultSet rs = stmt.executeQuery("SELECT * FROM my_table"); ``` 4. 处理结果:遍历`ResultSet`对象,获取查询结果: ```java while (rs.next()) { // 读取列值 Object col1Value = rs.getObject(1); // ...

    ResultSet

    例如,`resultSet.getInt(1)`或`resultSet.getString("columnName")`。 4. 遍历结果集:为了完整遍历ResultSet,你需要在while循环中使用next()方法,直到它返回false为止。示例代码如下: ``` while (resultSet....

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).pdf

    2. 获取结果集:`ResultSet rs = cs.getResultSet();` 3. 遍历结果集并处理数据: ```java while (rs.next()) { String id = rs.getString("ID"); String name = rs.getString("NAME"); // 处理id和name... } ...

    SQLite数据库 sqlitedll库文件 sqlite驱动JAR包 sqlite工具

    20 ResultSet rs = stmt.executeQuery("SELECT * FROM pmp_countries ORDER BY country_name ASC"); 21 // Iterate the result set, printing each column 22 // if the column was an int, we could do rs.getInt...

    Oracle驱动包ojdbc6-11.2.0.3

    ResultSet rs = stmt.executeQuery("SELECT * FROM table_name"); while (rs.next()) { String column1Value = rs.getString("column1"); int column2Value = rs.getInt("column2"); // 处理数据... } ``` 8. ...

    oracle ojdbc6-11.2.0.3.jar

    1. 执行SQL查询:通过Statement或PreparedStatement对象来执行SQL语句,获取ResultSet对象以处理查询结果。 2. 数据库连接池:配合像C3P0或Apache DBCP这样的连接池库,可以有效地管理和复用数据库连接。 3. 事务...

    jsp连接数据库大全

    这些示例代码对于初学者来说非常有用,但请注意,实际生产环境中通常不建议将数据库逻辑直接写入JSP页面,而是推荐采用MVC(Model-View-Controller)架构来分离业务逻辑和视图层。 首先,让我们看一下JSP连接Oracle...

    如何用jsp连接Access数据库.docx

    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); String sql = "select * from username"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()...

Global site tag (gtag.js) - Google Analytics