(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解

说明:Statement stmt = con.createStatemen=(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

通用格式为:Statement stmt=con.createStatement(int type,int concurrency);我们在访问数据库的时候,在读取返回结果的时候,可能要前后移动指针,比如我们先计算有多少条信息,这是我们就需要把指针移到最后来计算,然后再把指针移到最前面,逐条读取,有时我们只需要逐条读取就可以了。还有就是有只我们只需要读取数据,为了不破坏数据,我们可采用只读模式,有时我们需要望数据库里添加记录,这是我们就要采用可更新数据库的模式。下面我们就对其参数进行说明:

参数 int type

ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。

ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。

ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

参数 int concurrency

ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。

ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。

查询语句

ResultSet re=stmt.executeUpdate(SQL语句);用来更新数据库信息或插入数据

ResultSet re=stmt.executeQuery(SQL语句);用来查询数据库信息

当我们使用ResultSet re=stmt.executeQuery(SQL语句)查询后,我们可以使用下列方法获得信息:

public boolean previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时,返回false。

public void beforeFirst 将游标移动到结果集的初始位置,即在第一行之前。

public void afterLast() 将游标移到结果集最后一行之后。

public void first() 将游标移到结果集的第一行。

public void last() 将游标移到结果集的最后一行。

public boolean isAfterLast() 判断游标是否在最后一行之后。

public boolean isBeforeFirst() 判断游标是否在第一行之前。

public boolean ifFirst() 判断游标是否指向结果集的第一行。

public boolean isLast() 判断游标是否指向结果集的最后一行。

public int getRow() 得到当前游标所指向行的行号,行号从1开始,如果结果集没有行,返回0。

public boolean absolute(int row) 将游标移到参数row指定的行号。如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2行。当移动到第一行前面或最后一行的后面时,该方法返回false

不带参数使用默认值: 
createStatement() 
=createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)

這樣取得的Statement其執行SQL後得到的ResultSet,將只能使用next()方法逐筆取得查詢結果。

您可以在建立Statement物件時指定resultSetType,可指定的參數有 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE與 ResultSet.TYPE_SCROLL_SENSITIVE,在不指定的情況下,預設是第一個,也就是只能使用next()來逐筆取得資料,指定第二個或第三個,則可以使用ResultSet的afterLast()、previous()、absolute()、relative()等方法。

时间: 2024-10-03 22:51:42

(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解的相关文章

重写ResultSet实现分页功能(最好的分页技术)(转)

1.首先定义一个接口Pageable 继承ResultSet这个类 并在接口中定义一些自己的方法,具体方法如下: package com.page; import java.sql.ResultSet; public interface Pageable extends ResultSet {   /**返回总页数 */ int getPageCount(); /**返回当前页的记录条数 */ int getPageRowsCount(); /**返回分页大小 */ int getPageSiz

JDBC ResultSet 可滚动的结果集

可滚动的结果集 1)com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作. 当type设置为:ResultSet.TYPE_FORWARD_ONLY(默认)时,游标是不能任意移动的,只能逐步向前,否则会报 SQLServerException 示例: statement = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_XXX)

ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I

说明:Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 通用格式为:Statement stmt=con.createStatement(int type,int concurrency);我们在访问数据库的时候,在读取返回结果的时候,可能要前后移动指针,比如我们先计算有多少条信息,这是我们就需要把指针移到最后来计算,然后再把指针移到最前面,逐条读

ResultSet的Type

st = conn.prepareStatement(sql.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);   str=DataUtil.resultSetToArray(st.executeQuery()); 一.ResultSet的Type属性TYPE_FORWARD_ONLY,   TYPE_SCROLL_INSENSITIVE,or TYPE_SCROLL_SENSITIVE解释:1

java中result和resultSet

世界这么大,而我这么小,我还有什么脸面骄傲,我拿什么去自豪!唯有不停地求知,才能获得一点点的安慰. 我一直坚持着一个这样的定理:关于语言的用法,永远是官方文档最靠谱. ResultSet: 1,定义         public interface ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成. 2,获得         Statement stmt = con.createStatement(                                  

ResultSet取结果集多少条记录方法及分页概要

allst=toconn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); allsql = "SELECT distinct docid,docchannel FROM isimportant where docchannel='"+CHANNELID+"'"; allrs=allst.executeQuery(allsql); allrs.last();

ResultSet

import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Properties; public class ResultSetTest { private String driver; private String u

java ResultSet获得总行数

在Java中,获得ResultSet的总行数的方法有以下几种. 第一种:利用ResultSet的getRow方法来获得ResultSet的总行数 Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);  ResultSet rset = stmt.executeQuery("select * from yourTableName");  rse

ResultSet用法

ResultSet 对象具有指向其当前数据行的光标.最初,光标被置于第一行之前.next 方法将光标移动到下一行:因为该方法在 ResultSet 对象没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集. 默认的 ResultSet 对象不可更新,仅有一个向前移动的光标.因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行.可以生成可滚动和/或可更新的 ResultSet 对象.以下代码片段(其中 con 为有效的 Connection 对象)演示了如何生成可