`
pavel
  • 浏览: 923972 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ResultSet 游标控制

    博客分类:
  • jdbc
SQL 
阅读更多

之前在建立Statement或 PreparedStatement,您所使用的是Connection无参数的createStatement()与 preparedStatement(),这样取得的Statement其执行SQL后得到的ResultSet,将只能使用next()方法逐笔取得查询结果。

您可以在建立Statement事务时指定resultSetType,可指定的参数有 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE与 ResultSet.TYPE_SCROLL_SENSITIVE,在不指定的情况下,预设是第一个,也就是只能使用next()来逐笔取得资料,指定第二个或第三个,则可以使用ResultSet的afterLast()、previous()、absolute()、relative()等方法。

ResultSet.TYPE_SCROLL_INSENSITIVE与ResultSet.TYPE_SCROLL_SENSITIVE 的差别在于能否取得ResultSet改变值后的资料,另外您还必须指定resultSetConcurrency,有 ResultSet.CONCUR_READ_ONLY与ResultSet.CONCUR_UPDATABLE两个参数可以设定,前者表示只能读取 ResultSet的资料,后者表示可以直接使用ResultSet来操作资料库,这会在下一个主题后说明。

createStatement()不给定参数时,预设是ResultSet.TYPE_FORWARD_ONLY、 ResultSet.CONCUR_READ_ONLY。

这边先示范如何控制ResultSet的读取游标,在建立Statement时,您使用 ResultSet.TYPE_SCROLL_INSENSITIVE及ResultSet.CONCUR_READ_ONLY即可,下面这个例子示范从查询到的资料最后一笔开始往前读取:

Statement stmt = conn.createStatement(
                          ResultSet.TYPE_SCROLL_INSENSITIVE, 
                          ResultSet.CONCUR_READ_ONLY);
ResultSet result = stmt.executeQuery(
                          "SELECT * FROM message");
result.afterLast();
while(result.previous()) {
     System.out.print(result.getString("name") + "\t");
     System.out.print(result.getString("email") + "\t");
     System.out.print(result.getString("subject") + "\t");
     System.out.print(result.getString("time") + "\t");
     System.out.println(result.getString("memo") + "\t");
}
stmt.close();
conn.close();

 

afterLast()会将ResultSet的读取游标移至最后一笔资料之后,您使用previous()方法往前移动读取游标。

您也可以使用absolute()方法指定查询到的资料之位置,例如absolute(4)表示第四笔资料,absoulte(10)则是第十笔资料,如果指定负数,则从最后往前数,例如absolute(-1)则是最后一笔资料,若有100笔资料,absoulte(-4)则是第97笔资料。

relative()方法则从目前游标处指定相对位置,例如若目前在第25笔资料,则relative(-2)则表示第23笔资料,而relative (4)则表示第29笔资料。

另外还有beforeFirst(),可以将游标移至资料的第一笔之前,first()可以将游标移至第一笔资料,而last()可以将游标移至最后一笔资料。

分享到:
评论

相关推荐

    JDBC编程resultset游标控制

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

    ResultSet

    8. 游标属性:可以通过设置Statement的游标属性(如CONCUR_READ_ONLY和CONCUR_UPDATABLE)来控制ResultSet是否可滚动和更新。默认情况下,ResultSet是只读且不可滚动的。 9. 非滚动与滚动ResultSet:非滚动...

    Oracle 游标使用大全

    显式游标则允许程序员更精细地控制数据处理过程。 2. **显式游标的操作** - OPEN:打开游标,准备读取数据。 - FETCH:从游标中获取一行数据。 - NEXT:移动到下一行。 - CLOSE:关闭游标,释放资源。 - ...

    jdbcTemplate分页彻底解决,使用游标滚动

    2. **定义`ResultSetExtractor`**:创建一个实现了`ResultSetExtractor`的类,比如`SplitPageResultSetExtractor`,在其中实现`extractData(ResultSet rs)`方法。这个方法将负责处理游标,每次处理一条记录,直到...

    JAVA调用ORACLE存储过程游标使用

    执行`cs.execute()`后,我们可以从`cs.getObject(1)`获取到游标对象,将其转换为`ResultSet`,然后像处理普通查询结果一样遍历游标中的数据。 请注意,为了运行这段代码,你可能需要在项目中添加Oracle的JDBC驱动...

    Oracle存储过程out游标

    ResultSet rs = (ResultSet) cs.getObject(1); while (rs.next()) { // 处理结果集 } rs.close(); ``` 这段Java代码首先创建了一个CallableStatement对象,然后注册了Out参数(游标),执行存储过程,并从存储过程...

    sqlserver游标存储过程的使用

    在Java中,你可以通过CallableStatement对象调用存储过程,然后使用ResultSet对象作为游标处理返回的结果。 总结,SQL Server中的游标和存储过程的结合使用,为我们提供了一种灵活处理大量数据的方式。在存储过程中...

    支持ResultSet的JTable

    3. **处理ResultSet**:`ResultSet`是一个游标,可以按照顺序读取查询结果。我们可以使用`next()`方法移动游标并获取每一行数据。 4. **数据模型**:`JTable`的数据是通过`TableModel`接口管理的。我们通常会创建一...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果打印出来。 六、结论 本示例展示了如何使用 ...

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    在Oracle数据库中,游标是一种重要的工具,用于处理和返回多行结果集。在这个例子中,我们将探讨如何通过存储过程和...通过游标,我们可以灵活地控制对数据库的访问,同时避免一次性加载大量数据可能导致的内存问题。

    ResultSet常用方法

    ResultSet是Java数据库连接(JDBC)中的一个核心接口,它用于存储从数据库查询返回的结果集。在处理SQL查询结果时,开发人员通常会与ResultSet对象交互以获取和操作数据。以下是对ResultSet常用方法的详细解释: 1....

    Java调用oracle存储过程通过游标返回临时表

    5. **处理游标结果**:使用`ResultSetMetaData`获取游标的列信息,然后通过`ResultSet`迭代读取每一行数据。由于游标返回的是临时表数据,所以需要逐行处理并存储在适当的数据结构中,如ArrayList或HashMap。 6. **...

    ResultSet用法集锦

    3. `ResultSet`的游标管理: - `first()`: 将光标移动到结果集的第一行。 - `last()`: 将光标移动到结果集的最后一行。 - `beforeFirst()`: 将光标移动到结果集之前,但仍在结果集中。 - `afterLast()`: 将光标移动...

    java调用oracle存储过程(游标)相关

    对于游标输出,结果将作为`ResultSet`返回。 5. **处理游标返回值**: 获取`ResultSet`后,可以使用`ResultSet.next()`遍历每一行,然后通过`ResultSet.getXXX()`获取字段值。 6. **关闭资源**: 完成数据处理后...

    Oracle数据库添加 更新 游标 过程 Java Project

    使用游标的概念在Java中通常表现为结果集(`ResultSet`),你可以迭代这个结果集来处理每一行数据。 `Oracle_All_001`可能是项目中的一个主要文件,可能包含了整个项目的源代码、配置文件或数据库脚本。它可能涉及...

    java_学生信息管理系统

    详细的介绍了 jtable,abstracttablemodel,model2模式, 功能在stuManager中有详细介绍 ...5,翻页功能,实现 上一页 下一页, 有resultset 游标的 absolute()方法确定 游标指向的表seleectedrowCount 数。

    jdbc调用存储过程,函数,游标

    在JDBC中,当你执行一个查询后,结果会被返回到ResultSet对象,这个对象就是一个游标。你可以通过移动游标来读取一行行的数据。例如,使用ResultSet的`next`方法来检查是否有下一行,然后使用`getString`, `getInt`...

    数据库游标:探索数据世界的导航仪

    简单来说,游标是一种用于管理和操作查询结果集(ResultSet)的机制,它允许逐行遍历结果集并对每一行数据进行单独的处理。 #### 游标的作用 1. **逐行处理**:游标最核心的功能之一就是允许开发者逐行读取和处理...

    resultset2xml

    ResultSet对象是数据库查询结果的游标,可以按需逐行读取数据。每行数据由列名和对应的值组成,这对应于XML中的元素和属性。要将ResultSet转换为XML,我们需要遍历ResultSet,为每一行创建一个XML元素,并将列名作为...

Global site tag (gtag.js) - Google Analytics