JDBC——ResultSet

1 概述

SQL语句执行后从数据库查询读取数据,返回的数据放在ResultSet结果集中。ResultSet对象维护指向结果集中当前行的光标。
光标可以基于ResultSet的属性移动。当创建生成ResultSet的相应Statement时,将指定这些属性。JDBC提供以下连接方法来创建所需要的ResultSet的语句。

  • createStatement(int RSType, int RSConcurrency);
  • prepareStatement(String SQL, int RSType, int RSConcurrency);
  • prepareCall(String sql, int RSType, int RSConcurrency);

1.1 RSType

类型 描述
ResultSet.TYPE_FORWARD_ONLY 光标只能在结果集中向前移动(默认)
ResultSet.TYPE_SCROLL_INSENSITIVE 光标可以向前和向后滚动,结果集对创建结果集后发生的数据库所做的更改不敏感。
ResultSet.TYPE_SCROLL_SENSITIVE 光标可以向前和向后滚动,结果集对创建结果集之后发生的其他数据库的更改敏感。

1.2 RSConcurrency

并发 描述
ResultSet.CONCUR_READ_ONLY 创建只读结果集,默认。
ResultSet.CONCUR_UPDATABLE 创建可更新的结果集

2 浏览结果集

方法 描述
void beforeFirst() 将光标移动到第一行之前
void afterLast() 将光标移动到最后一行之后。
boolean first() 将光标移动到第一行。
void last() 将光标移动到最后一行。
boolean absolute(int row) 将光标移动到指定的行。
relative(int row) 从当前指向的位置,将光标向前或向后移动给定行数。
boolean previous() 将光标移动到上一行。
boolean next() 将光标移动到下一行。
int getRow() 返回光标指向的行号。
void moveToInsertRow() 将光标移动到结果集中的特殊行,该行可用于将新行插入数据库。当前光标位置被记住。
void moveToCurrentRow() 如果光标当前位于插入行,则将光标移回当前行; 否则,此方法什么也不做

3 查看结果集

方法 功能
int getInt(String columnName) 返回名为columnName的列中当前行中的int值。
int getInt(int columnIndex) 返回指定列索引当前行中的int值。列索引从1开始

每个可能的数据类型都有一个get方法,每个get方法有两个版本:采用类名称和列索引。

在八个Java基本类型中的每一个ResultSet接口中都有get方法,以及常用的类型。如java.lang.String,java.lang.Ojbect和java.net.URL等。还有一些方法可以获取SQL数据类型:java.sql.Date,java.sql.Time,java.sql.TimeStamp,java.sql.Clob和java.sql.Blob等等

4 更新结果集

与get方法一样,每种数据类型都有两种更新方法:采用列名称和列索引。
更新结果集中的一行会更改ResultSet对象中当前行的列,但不会更改底层数据库中的列的值。要更新数据库中的行,需要调用以下方法之一。

方法 描述
void updateRow() 更新数据库中当前行
void deleteRow() 从数据库中删除当前行
void refreshRow() 刷新结果集中的数据以反映数据库中最近的任何更改。
void cancelRowUpdates() 取消对当前行所做的任何更新。
void insertRow() 在数据库中插入一行。 只有当光标指向插入行时,才能调用此方法。

猜你喜欢

转载自blog.csdn.net/ccoran/article/details/84967928