java.sql.ResultSet类表示从数据库中返回的结果集。当我们使用Statement类提供的executeQuery()方法下达Select命令来查询数据库时,executeQuery()方法会把数据库响应的查询结果存放在ResultSet对象中供使用。
1.顺序结果集
ResultSet实例具有指向当前数据行的指针,最初指针指向第一行记录的前面,通过next()方法可以将指针移动到第一条记录,连续调用next()方法,把指针移动到下一行。当指针到达最后一条记录的尾部时,该方法会返回false,否则返回true,所以可以通过while循环来逐条访问ResultSet结果集。默认情况下,ResultSet实例不可以更新,只能移动指针,所以只能迭代一次,并且只能按从前到后的顺序进行。如果需要,可以生成可滚动和可更新的ResultSet实例。
ResultSet类提供了从当前行检索不同类型列值的getXXX()方法,均有两个重载方法,分别根据列的索引编号和列名检索列值,其中以列的索引编号较为高效,编号从1开始;或采用指定列名的方式,列名不区分字母的大小写。其中,XXX代表Java中的数据类型,如getInt()、getString()、getDate()等。对于不同的getXXX()方法,JDBC驱动程序尝试将基础数据转换为与getXXX()方法相对应的Java类型并返回。ResultSet类提供了很多成员方法,这些方法执行不成功时则抛出SQLException异常。
例如:把成绩表中每条记录的姓名和英语成绩打印输出。
2.可滚动结果集
ResultSet默认是顺序查询,当需要在结果集中前后移动时,就要采用如下构造方法创建可滚动结果集。
Statement sql=con.createStatement(int type,int concurrency);
其中,type的取值有:
•ResultSet.TYPE_FORWARD_ONLY:结果集不能滚动,这是默认值。
•ResultSet.TYPE_SCROLL_INSENSITIVE:结果集可以滚动,但ResuleSet对数据库中发送的数据改变不敏感。
•ResultSet.TYPE_SCROLL_SENSITIVE:结果集可以滚动,并且ResuleSet对数据库中发生的改变敏感。
concurrency的取值有:
•ResultSet.CONCUR_READ_ONLY:只读结果集,不能用于更新数据库。
•ResultSet.CONCUR_UPDATABLE:可更新结果集,可以用于更新数据库。
可滚动结果集常用的成员方法如下:(www.daowen.com)
(1)public boolean absolute(int row):该方法的作用是将记录集中的某一行设定为当前行,亦即将数据库游标移动到指定的行,参数row指定了目标行的行号,这是绝对的行号,由记录集的第一行开始计算不是相对的行号。
(2)public boolean relative(int rows):该方法的作用也是将记录集中的某一行设定为当前行,但是它的参数rows表示目标行相对于当前行的行号。
(3)public boolean first():该方法的作用是将当前行定位到数据库记录集的第一行。
(4)public boolean last():该方法的作用是将当前行定位到数据记录集的最后一行,和first()方法相反。
(5)public boolean isFirst():该方法的作用是检查当前行是否记录集的第一行,如果是返回true,否则返回false。
(6)public boolean isLast():该方法的作用是检查当前行是否记录集的最后一行,如果是返回true,否则返回false。
(7)public void afterLast():该方法的作用是将数据库游标移到记录集的最后,位于记录集最后一行的后面,如果该记录集不包含任何的行该方法不产生作用。
(8)public void beforeFirst():该方法的作用是将数据库游标移到记录集的最前面,位于记录集第一行的前面,如果记录集不包含任何的行该方法不产生作用。
(9)public boolean isAfterLast():该方法检查数据库游标是否处于记录集的最后面,如果是返回true,否则返回false。
(10)public boolean isBeforeFirst():该方法检查数据库游标是否处于记录集的最前面,如果是返回true,否则返回false。
(11)public boolean next():该方法的作用是将数据库游标向前移动一位,使得下一行成为当前行,当刚刚打开记录集对象时,数据库游标的位置在记录集的最前面,第一次使用next()方法将会使数据库游标定位到记录集的第一行,第二次使用next()方法将会使数据库游标定位到记录集的第二行,以此类推。
(12)public boolean previous():该方法的作用是将数据库游标向后移动一位,使得上一行成为当前行。
(13)public int getRow():返回当前游标所指的行号,从1开始。
在使用JDBC访问数据库整个流程结束之前,要关闭查询语句及与数据库的连接。注意,关闭的顺序如果有结果集,先关闭结果集ResultSet对象,再关闭Statement对象,最后关闭数据库连接,一般可以放在异常处理的finally语句中实现关闭。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。