今天想用rs.first()方法,突然方法报错了:Exception in thread "main" java.sql.SQLException: 对只转发结果集的无效操作: first
后来上网找了找才知道原来是:
PreparedStatement pstmt =conn.prepareStatement(sql);这种方法产生的ResultSet 对象类型为ResultSet.TYPE_FORWARD_ONLY
这种类型的结果集只能通过rs.next();方法逐条读取,使用其他读取方法时就会报错。如果需要执行一些其他或复杂的移动结果集指针的操作就要使用其它参数
具体参数对照如下:
1. ResultSet.TYPE_FORWARD_ONLY (默认方式,略)
2. ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3. ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
4. ResultSet.CONCUR_READ_ONLY 只读取ResultSet
5. ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库
故上边的语句改为:
PreparedStatement pstmt =conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
这样,ResultSet rs = pstmt.executQuery();
rs.first()方法就可以用了
分享到:
相关推荐
以下是对ResultSet常用方法的详细解释: 1. **移动指针**: - `rs.previous()`:将结果集的游标向前移动一行,如果已经位于第一条记录,此操作将导致游标保持不变。 - `rs.next()`:将游标向后移动一行,这是遍历...
Java ResultSet常用方法 Java ResultSet是Java数据库连接(JDBC)中最重要的组件之一,用于存储和处理数据库查询结果。在Java中,ResultSet对象是通过Statement对象的executeQuery()方法或prepareStatement()方法...
次类对ResultSet进行封装,可以将其转化为List,Map,BO等
这个工具类通常包含一个静态方法,接受ResultSet和JavaBean类型作为参数,然后遍历ResultSet,将数据填充到JavaBean对象中: ```java import java.sql.ResultSet; import java.sql.SQLException; public class ...
### ResultSet对象获取数据的各种方法 在Java编程语言中,`ResultSet`对象是处理数据库查询结果的核心组件之一。它充当一个可滚动的、可更新的数据表,用于存储从数据库执行SQL语句后返回的结果集。本文将详细介绍...
11. 其他特性:ResultSet还支持定位特定行(absolute()和relative()方法),检查当前行是否被修改(rowUpdated()方法),以及获取当前行号(getRow()方法)等。 总结来说,ResultSet是Java数据库编程的核心组件,...
### Java ResultSet 常用方法详解 #### 一、ResultSet 类型概述 在Java的JDBC编程中,`ResultSet`接口用于表示从数据库查询中获取的结果集。它提供了多种方式来处理这些数据,并且根据不同的应用场景,支持不同类型...
ResultSet 通过一套 get 方法访问当前行中的不同列,例如 getInt、getString、getFloat 等。 在使用 ResultSet 之前,需要先执行 SQL 语句,并将结果存储到 ResultSet 对象中。例如: ```java java.sql.Statement ...
ResultSet 转为 List ResultSet 转为 List<Map> 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ...8. SQLException:SQLException 是 Java 中的异常类,用于抛出数据库操作异常。
6. **关闭资源**:最后关闭Statement、ResultSet和Connection对象。 **1.4 QuickStart示例** 示例代码展示了如何使用JDBC连接数据库并执行查询操作: ```java // 加载MySQL数据库驱动 Class.forName(...
假设我们的ResultSet包含用户信息,我们可以创建一个User类: ```java public class User { private String name; private int age; // 构造方法,getters和setters } ``` 3. 将ResultSet转换为List<User>...
2. **SQL查询**:执行`Statement`或`PreparedStatement`对象的`executeQuery()`方法来执行SQL查询,这会返回一个`ResultSet`对象。 3. **处理ResultSet**:`ResultSet`是一个游标,可以按照顺序读取查询结果。我们...
一些第三方库如Apache Commons DBUtils提供了便捷的方法来处理`ResultSet`,如`QueryRunner`类,它可以简化结果集的遍历和数据转换。 9. 源码分析: `ResultSet`的实现通常由JDBC驱动程序提供,每个数据库厂商可能...
这个类可以包含对ResultSetMetaData接口中部分方法的调用,比如字段名称、显示长度、类型和标识等,从而简化对查询结果的处理。 例如,`RecordMetaData`类可以有以下成员变量和方法: - `columnCount`:存储列的...
获得结果集的字段名称_ResultSet的属性要调用ResultSetMetaData的方法 在Java中,获取结果集的字段名称可以通过调用ResultSetMetaData的方法来实现。ResultSetMetaData是一个公共接口,提供了关于ResultSet对象中列...
java组件开发(15) JDBC操作工具类与ResultSet数据
在Java项目中,我们可能有一个名为Util的类,包含静态方法来处理ResultSet到XML的转换。这种方法的好处是代码的重用性和模块化,使得其他部分的代码可以方便地调用这个功能。 在处理大型ResultSet时,我们还需要...
- ResultSet的遍历,如next()方法和各字段的get方法 - Workbook、Sheet、Row和Cell对象的创建与操作 - 文件I/O操作,尤其是OutputStream的使用来写入Excel文件 - 错误处理和资源管理,如关闭数据库连接和流 总的来...