目录
1、简介
//表示数据库结果集的数据表,通常通过执行查询数据库的语句生成
public interface ResultSet extends Wrapper,AutoCloseable{
........
}
ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false ,因此可以在while循环中使用循环来遍历结果集。
默认的ResultSet对象不可更新,并且只有一个向前移动的光标。 因此,您只能从第一行到最后一行迭代一次。 可以生成可滚动和/或可更新的ResultSet对象。
以下代码片段(其中con是有效的Connection对象)说明了如何使可滚动且对其他人更新不敏感的结果集,这是可更新的。
//ResultSet.TYPE_SCROLL_INSENSITIVE 可回滚 ResultSet.CONCUR_UPDATABLE可更新
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
通过指定这两个参数设置ResultSet对象。
ResultSet接口提供getter方法( getBoolean , getLong ,用于从当前行检索列值,等等)。 可以使用列的索引号或列的名称来检索值。 一般来说,使用列索引将更有效率。 列从1编号。为了最大可移植性,每行中的结果集列应以从左到右的顺序读取,每列应只读一次。
对于getter方法,JDBC驱动程序尝试将底层数据转换为getter方法中指定的Java类型,并返回合适的Java值。 JDBC规范具有一个表格,该表格显示了可由ResultSet getter方法使用的SQL类型到Java类型的允许映射。
用作getter方法输入的列名不区分大小写。 当使用列名称调用getter方法时,多个列具有相同的名称,将返回第一个匹配列的值。 列名称选项用于在生成结果集的SQL查询中使用列名时使用。 对于在查询中未明确命名的列,最好使用列号。 如果使用列名称,程序员应该小心保证它们唯一地引用预期的列,这可以通过SQL AS子句来确保。
注意:
JDBC 2.0 API(Java2 SDK,Standard Edition,1.2版)中的此接口添加了一组更新方法。 关于getter方法参数的注释也适用于updater方法的参数。
更新方法可以以两种方式使用:
1、更新当前行中的列值。 在可滚动的ResultSet对象中,光标可以向前和向后移动到绝对位置或相对于当前行的位置。 下面的代码段更新NAME所述的第五行中列ResultSet对象rs ,然后使用方法updateRow来更新该数据的源表rs推导。
rs.absolute(5); // moves the cursor to the fifth row of rs
rs.updateString("NAME", "AINSWORTH"); //更新第五行的NAME为AINSWORTH
rs.updateRow(); // 更新此行数据
2、将列值插入到插入行中。 可更新的ResultSet对象具有与其相关ResultSet的特殊行,用作构建要插入的行的暂存区域。 以下代码片段将光标移动到插入行,构建一个三列行,并将其插入到rs ,并使用方法insertRow进入数据源表。
rs.moveToInsertRow(); // 移动游标到指定插入行
rs.updateString(1, "AINSWORTH");
rs.updateInt(2,35);
rs.updateBoolean(3, true);
rs.insertRow();
rs.moveToCurrentRow();
ResultSet对象的列的数量,类型和属性由ResultSet.getMetaData方法返回的ResultSetMetaData对象提供。
2、静态常量介绍
Modifier and Type | Field and Description |
static int CLOSE_CURSORS_AT_COMMIT | 当提交当前事务时,指示打开 ResultSet具有此 ResultSet对象的常量将被关闭。 |
static int HOLD_CURSORS_OVER_COMMIT | 这表明开放的不断 ResultSet当前事务时承诺的对象具有此可保存性将继续开放。 |
static int CONCUR_READ_ONLY | 该常数的作用是指定当前记录集的协作方式(concurrencymode)为只读;一旦使用了这个常数,那么用户就不可以更新记录集中的数据。 |
static int CONCUR_UPDATABLE | 该常数的作用是指定当前记录集的协作方式(concurrencymode)为可以更新;一旦使用了这个常数,那么用户就可以使用updateXXX()等方法更新记。 |
static int FETCH_FORWARD | 该常数的作用是指定处理记录集中行的顺序,是由前到后即从第一行开始处理一直到最后一行. |
static int FETCH_REVERSE | 该常数的作用是指定处理记录集中行的顺序,是由后到前即从最后一行开始处理一直到第一行. |
static int FETCH_UNKNOWN | 该常数的作用是不指定处理记录集中行的顺序,由JDBC 驱动程序和数据库系统决定. |
static int TYPE_FORWARD_ONLY | 该常数的作用是指定数据库游标的移动方向是向前,不允许向后移动即只能使ResultSet 接口的next()方法而不能使用previous()方法否则会产生错误. |
static int TYPE_SCROLL_INSENSITIVE | 该常数的作用是指定数据库游标可以在记录集中前后移动,并且当前数据库用户获取的记录集对其他用户的操作不敏感;就是说,当前用户正在浏览记录集中的数据,与此同时,其他用户更新了数据库中的数据,但是当前用户所获取的记录集中的数据不会受到任何影响。 |
static int TYPE_SCROLL_SENSITIVE | 该 常数的作用是指定数据库游标可以在记录集中前后移动,并且当前数据库用户获取的记录集对其他用户的操作敏感,就是说,当前用户正在浏览记录集,但是其它用 户的操作使数据库中的数据发生了变化,当前用户所获取的记录集中的数据也会同步发生变化,这样有可能会导致非常严重的错误产生建议慎重使用该常数。 |
static int CONCUR_READ_ONLY | 该常数的作用是指定当前记录集的协作方式(concurrencymode)为只读;一旦使用了这个常数,那么用户就不可以更新记录集中的数据。 |
3、ResultSet 接口的方法
3.1、next
boolean next()
throws SQLException
将光标从当前位置向前移动一行。 ResultSet光标最初位于第一行之前; 第一次调用方法next使第一行成为当前行; 第二个调用使第二行成为当前行,依此类推。
当调用next方法返回false时,光标位于最后一行之后。 任何调用需要当前行的ResultSet方法将导致抛出SQLException 。 如果结果集类型为TYPE_FORWARD_ONLY ,这是他们指定的JDBC驱动程序实现是否会返回供应商false或抛出一个SQLException上的后续调用next 。
如果当前行的输入流已打开,则对方法next的调用将隐式关闭它。 当读取新行时, ResultSet对象的警告链将被清除。
结果
true如果新的当前行有效; false如果没有更多的行。
异常
SQLException - 如果发生数据库访问错误,或者在关闭的结果集上调用此方法。
3.2、close
void close()
throws SQLException
ResultSet发布此ResultSet对象的数据库和JDBC资源,而不是等待此事件在自动关闭时发生。
一个的闭合ResultSet对象不关闭Blob , Clob或NClob由创建的对象ResultSet 。 Blob , Clob或NClob对象在它们被创建后,除非他们的交易的至少持续时间保持有效free被调用方法。
当ResultSet关闭时,通过调用getMetaData方法创建的任何ResultSetMetaData实例仍然可访问。
注意: ResultSet目的是通过自动关闭,Statement生成它时该对象Statement对象被关闭时,重新执行,或用于检索从多个结果的序列中的下一结果。
调用已关闭的ResultSet对象上的方法close是无操作的。
Specified by
close中的 AutoCloseable。
异常
SQLException - 如果发生数据库访问错误。
3.3、wasNull
boolean wasNull()
throws SQLException
报告最后一列读取的值是否为SQL NULL 。 请注意,您必须先在列上调用其中一个getter方法以尝试读取其值,然后调用方法wasNull来查看读取的值是否为SQL NULL 。
结果
true如果读取的最后一列值为NULL
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.4、getString
String getString(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 String的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为 NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.5、getBoolean
boolean getBoolean(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值ResultSet对象为boolean的Java数据类型。
如果指定列的数据类型为CHAR或VARCHAR,并且包含“0”或数据类型为BIT,TINYINT,SMALLINT,INTEGER或BIGINT,并且包含0,则返回值false 。 如果指定列的数据类型为CHAR或VARCHAR,并且包含“1”或数据类型为BIT,TINYINT,SMALLINT,INTEGER或BIGINT,并且包含1,则返回值为true 。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,返回值为false
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.6、getByte
byte getByte(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 byte的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,返回值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.7、 getShort
short getShort(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 short的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,返回值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.8、getInt
int getInt(int columnIndex)
throws SQLException
以Java数据类型中的 int为此 ResultSet对象当前行中指定列的值。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,则返回的值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.9、getLong
long getLong(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 long的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,返回值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.10、getFloat
float getFloat(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 flo
double getDouble(int columnIndex)
throws SQLException
at的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为NULL ,返回值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.11、getDouble
double getDouble(int columnIndex)
throws SQLException
这个检索的当前行中指定列的值 ResultSet对象为 double的Java数据类型。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为SQL NULL ,返回值为0
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.12、getBigDecimal
@Deprecated
BigDecimal getBigDecimal(int columnIndex,
int scale)
throws SQLException
//已弃用 使用getBigDecimal(int columnIndex)或getBigDecimal(String columnLabel)
这个检索的当前行中指定列的值 ResultSet对象为 java.sql.BigDecimal的Java对象。
参数
columnIndex - 第一列是1,第二列是2,...
scale - 小数点右侧的位数
结果
列值; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.13、getBytes
byte[] getBytes(int columnIndex)
throws SQLException
将该ResultSet对象的当前行中指定列的值作为Java编程语言中的byte数组检索。 字节表示驱动程序返回的原始值。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.14、getDate
Date getDate(int columnIndex)
throws SQLException
将此 ResultSet对象的当前行中的指定列的值作为Java编程语言中的 java.sql.Date对象检索。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.15、getTime
Time getTime(int columnIndex)
throws SQLException
将此 ResultSet对象的当前行中指定列的值作为Java编程语言中的 java.sql.Time对象检索。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为SQL NULL ,则返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.16、getTimestamp
Timestamp getTimestamp(int columnIndex)
throws SQLException
将该 ResultSet对象的当前行中指定列的值作为Java编程语言中的 java.sql.Timestamp对象检索。
参数
columnIndex - 第一列是1,第二列是2,...
结果
列值; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.17、getAsciiStream
InputStream getAsciiStream(int columnIndex)
throws SQLException
将此ResultSet对象的当前行中指定列的值作为ASCII字符流检索。 然后可以从流中读取大小写的值。 这种方法特别适用于检索大量的LONGVARCHAR值。 JDBC驱动程序将从数据库格式进行任何必要的转换为ASCII。
注意:返回流中的所有数据必须在获取任何其他列的值之前读取。 下一次调用getter方法会隐式关闭流。 此外,当调用方法InputStream.available是否有数据可用时,流可能返回0 。
参数
columnIndex - 第一列是1,第二列是2,...
结果
Java输入流,将数据库列值作为一个字节的ASCII字符流传递; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.18、 getUnicodeStream
@Deprecated
InputStream getUnicodeStream(int columnIndex)
throws SQLException
//已弃用 使用getCharacterStream代替getUnicodeStream
检索此ResultSet对象的当前行中指定列的值,以及两字节3个字符的流。 第一个字节是高字节; 第二个字节是低字节。 然后可以从流中读取大小写的值。 这种方法特别适用于检索大量的LONGVARCHAR值。 JDBC驱动程序将从数据库格式进行任何必要的转换为Unicode。
注意:返回流中的所有数据必须在获取任何其他列的值之前读取。 下一次调用getter方法会隐式关闭流。 此外,当调用方法InputStream.available时,是否有数据可用,流可能返回0 。
参数
columnIndex - 第一列是1,第二列是2,...
结果
Java输入流,将数据库列值作为两字节Unicode字符流传递; 如果值为SQL NULL ,返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.20、getBinaryStream
InputStream getBinaryStream(int columnIndex)
throws SQLException
将此ResultSet对象的当前行中的指定列的值作为未解释的字节流检索。 然后可以从流中读取大小写的值。 该方法特别适用于检索大量的LONGVARBINARY值。
注意:返回流中的所有数据必须在获取任何其他列的值之前读取。 下一次调用getter方法会隐式关闭流。 此外,当调用方法InputStream.available是否有数据可用时,流可能返回0 。
参数
columnIndex - 第一列是1,第二列是2,...
结果
将输入数据库列值作为未解释字节流的Java输入流; 如果值为SQL NULL ,则返回值为null
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.21、getWarnings
SQLWarning getWarnings()
throws SQLException
检索通过此ResultSet对象的呼叫报告的第一个警告。 此ResultSet对象的后续警告将链接到此方法返回的SQLWarning对象。
每次阅读新行时,警告链都会自动清除。 在已关闭的ResultSet对象上可能无法调用此方法; 这样做会造成SQLException被抛出。
注意:此警告链只包括由ResultSet方法引起的警告。 Statement方法(如读取OUT参数)引起的任何警告都将被链接到Statement对象上。
结果
报告的第一个 SQLWarning对象或 null没有
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.22、clearWarnings
void clearWarnings()
throws SQLException
清除此ResultSet对象上报告的所有警告。 调用此方法后,方法getWarnings返回null ,直到此ResultSet对象报告新的警告。
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.23、getCursorName
String getCursorName()
throws SQLException
检索此ResultSet对象使用的SQL游标的名称。
在SQL中,通过命名的游标检索结果表。 可以使用引用游标名称的定位更新/删除语句来更新或删除结果集的当前行。 为了确保光标具有适当的隔离级别以支持更新,游标的SELECT语句应为SELECT FOR UPDATE 。 如果省略FOR UPDATE ,定位更新可能会失败。
JDBC API通过提供ResultSet对象使用的SQL游标的名称来支持此SQL功能。 ResultSet对象的当前行也是此SQL游标的当前行。
结果
这个 ResultSet对象的游标的SQL名称
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.24、getMetaData
ResultSetMetaData getMetaData()
throws SQLException
检索此 ResultSet对象的列的数量,类型和属性。
结果
描述这个 ResultSet对象的列
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.25、getObject
Object getObject(int columnIndex)
throws SQLException
获取此的当前行中指定列的值ResultSet作为对象Object在Java编程语言。
此方法将以Java对象的形式返回给定列的值。 Java对象的类型将是与列的SQL类型相对应的默认Java对象类型,遵循JDBC规范中指定的内置类型的映射。 如果值为SQL NULL ,则驱动程序返回Java null 。
此方法也可用于读取数据库特定的抽象数据类型。 在JDBC 2.0 API中,方法getObject的行为被扩展为实现SQL用户定义类型的数据。
如果Connection.getTypeMap没有抛出一个SQLFeatureNotSupportedException ,那么当一列包含一个结构化或不同的值时,该方法的行为就像是调用: getObject(columnIndex, this.getStatement().getConnection().getTypeMap()) 。 如果Connection.getTypeMap确实抛出了一个SQLFeatureNotSupportedException ,那么不支持结构化值,并且将不同的值映射到由DISTINCT类型的底层SQL类型确定的默认Java类。
参数
columnIndex - 第一列是1,第二列是2,...
结果
一个 java.lang.Object持有列值
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.26、findColumn
int findColumn(String columnLabel)
throws SQLException
将给定的 ResultSet列标签映射到其 ResultSet列索引。
参数
columnLabel - 使用SQL AS子句指定的列的标签。 如果未指定SQL AS子句,则该标签是列的名称
结果
给定列名称的列索引
异常
SQLException - 如果 ResultSet对象不包含标记为 columnLabel的列,则会发生数据库访问错误,或者在关闭的结果集上调用此方法
3.27、getCharacterStream
Reader getCharacterStream(int columnIndex)
throws SQLException
将此 ResultSet对象的当前行中的指定列的值 ResultSet为 java.io.Reader对象。
参数
columnIndex - 第一列是1,第二列是2,...
结果
一个包含列值的java.io.Reader对象; 如果值为SQL NULL ,则返回的值为null在Java编程语言中)。
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.28、getBigDecimal
BigDecimal getBigDecimal(String columnLabel)
throws SQLException
将此 ResultSet对象的当前行中指定列的值作为 java.math.BigDecimal以完全精确的方式获取。
参数
columnLabel - 使用SQL AS子句指定的列的标签。 如果未指定SQL AS子句,则该标签是列的名称
结果
列值(全精度); 如果值为SQL NULL ,则返回的值为null在Java编程语言中)。
异常
SQLException - 如果columnLabel无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.29、isBeforeFirst
boolean isBeforeFirst()
throws SQLException
检索光标是否在此ResultSet对象中的第一行之前。
注意:对于ResultSet s,支持isBeforeFirst方法是可选的,结果集类型为TYPE_FORWARD_ONLY
结果
true如果光标在第一行之前; false如果光标在任何其他位置或结果集不包含任何行
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.30、isAfterLast
boolean isAfterLast()
throws SQLException
检索光标是否在此ResultSet对象中的最后一行之后。
注意:对于ResultSet s,支持isAfterLast方法是可选的,结果集类型为TYPE_FORWARD_ONLY
结果
true如果光标在最后一行之后; false如果光标处于任何其他位置,或者结果集不包含任何行
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.31、isFirst
boolean isFirst()
throws SQLException
检索光标是否在此ResultSet对象的第一行。
注意:支持isFirst方法对于ResultSet s是可选的,结果集类型为TYPE_FORWARD_ONLY
结果
true如果光标在第一行上; false否则
异常
SQLException - 如果发生数据库访问错误或在关闭结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.32、isLast
boolean isLast()
throws SQLException
检索光标是否在此ResultSet对象的最后一行。 注意:调用方法isLast可能是昂贵的,因为JDBC驱动程序可能需要提前一行才能确定当前行是否是结果集中的最后一行。
注意:对于ResultSet s,支持isLast方法是可选的,结果集类型为TYPE_FORWARD_ONLY
结果
true如果光标在最后一行; false否则
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.33、beforeFirst
void beforeFirst()
throws SQLException
将光标移动到这个ResultSet对象的正面,就在第一行之前。 如果结果集不包含行,则此方法不起作用。
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用,或者结果集类型是TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.34、afterLast
void afterLast()
throws SQLException
将光标移动到这个ResultSet对象的最后一行。 如果结果集不包含行,则此方法不起作用。
异常
SQLException - 如果发生数据库访问错误; 该方法在闭合结果集上调用,或者结果集类型为TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.35、first
boolean first()
throws SQLException
将光标移动到此 ResultSet对象中的第一行。
结果
true如果光标在有效的行上; false如果结果集中没有行
异常
SQLException - 如果发生数据库访问错误; 该方法在闭合结果集上调用,或者结果集类型为TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.36、last
boolean last()
throws SQLException
将光标移动到此 ResultSet对象中的最后一行。
结果
true如果光标在有效的行上; false如果结果集中没有行
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用,或者结果集类型是TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.37、getRow
int getRow()
throws SQLException
检索当前行号。 第一行是第1行,第2行等等。
注意:对于ResultSet s,支持getRow方法是可选的,结果集类型为TYPE_FORWARD_ONLY
结果
当前行号; 0如果没有当前行
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.38、absolute
boolean absolute(int row)
throws SQLException
将光标移动到此ResultSet对象中给定的行号。
如果行号为正,则光标相对于结果集的开头移动到给定的行号。 第一行是第1行,第二行是第2行,依此类推。
如果给定行号为负,光标将移动到相对于结果集结尾的绝对行位置。 例如,调用方法absolute(-1)将光标置于最后一行; 调用方法absolute(-2)将光标移动到下一行到最后一行,依此类推。
如果指定的行号为零,则光标移动到第一行之前。
将光标定位在结果集中的第一行/最后一行之外的尝试将光标留在第一行之前或最后一行之后。
注意:调用absolute(1)与调用first()相同。 调用absolute(-1)与调用last()相同。
参数
row - 光标应该移动的行的编号。 值为零表示光标将位于第一行之前; 正数表示从结果集开始计数的行号; 负号表示从结果集的结尾开始计数的行号
结果
true如果光标移动到这个ResultSet对象的位置; false如果光标在第一行之前或最后一行之后
异常
SQLException - 如果发生数据库访问错误; 该方法在闭合结果集上调用或结果集类型为TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.39、relative
boolean relative(int rows)
throws SQLException
boolean relative(int rows)
throws SQLException
将光标移动到正或负的相对行数。 尝试超出结果集中的第一行/最后一行将光标置于第一行/最后一行之前/之后。 调用relative(0)是有效的,但不会更改光标位置。
注:调用方法relative(1)是相同的调用方法next()并调用方法relative(-1)是相同的调用方法previous() 。
参数
rows - 一个int从当前行移动的行数的int ; 正数将光标向前移动; 负号将光标向后移动
结果
true如果光标在一行上; false否则
异常
SQLException - 如果发生数据库访问错误; 该方法在闭合结果集上调用或结果集类型为TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.40、previous
boolean previous()
throws SQLException
将光标移动到此ResultSet对象中的上一行。
当调用previous方法返回false时,光标位于第一行之前。 任何调用需要当前行的ResultSet方法将导致抛出SQLException 。
如果当前行的输入流已打开,则调用方法previous会隐式关闭它。 读取新行时,将清除ResultSet对象的警告更改。
结果
true如果光标现在位于有效的行上; false如果光标位于第一行之前
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用,或者结果集类型是TYPE_FORWARD_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.41、setFetchDirection
void setFetchDirection(int direction)
throws SQLException
给出这个ResultSet对象中的行将被处理的方向的提示。 初始值由确定Statement生成此对象ResultSet对象。 抓取方向可随时更改。
参数
direction - 一个int指定建议的提取方向; 之一ResultSet.FETCH_FORWARD , ResultSet.FETCH_REVERSE ,或ResultSet.FETCH_UNKNOWN
异常
SQLException - 如果发生数据库访问错误; 该方法在闭合结果集上调用,或者结果集类型为TYPE_FORWARD_ONLY ,并且获取方向不是FETCH_FORWARD
3.42、getFetchDirection
int getFetchDirection()
throws SQLException
检索此 ResultSet对象的抓取方向。
结果
这个 ResultSet对象的当前提取方向
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.43、setFetchSize
void setFetchSize(int rows)
throws SQLException
给JDBC驱动程序一个提示,当这个ResultSet对象需要更多行时,应该从数据库中获取的行数。 如果指定的获取大小为零,则JDBC驱动程序将忽略该值,并且可以自由地对获取大小应该做出最佳猜测。 默认值由创建结果集的Statement对象设置。 抓取大小可随时更改。
参数
rows - 要获取的行数
异常
SQLException - 如果发生数据库访问错误; 这种方法在一个封闭的结果集上被调用,或者条件rows >= 0不满足
3.45、getFetchSize
int getFetchSize()
throws SQLException
检索此 ResultSet对象的提取大小。
结果
这个 ResultSet对象的当前提取大小
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.46、getType
int getType()
throws SQLException
检索此ResultSet对象的类型。 该类型由创建结果集的Statement对象确定。
结果
ResultSet.TYPE_FORWARD_ONLY , ResultSet.TYPE_SCROLL_INSENSITIVE ,或 ResultSet.TYPE_SCROLL_SENSITIVE
异常
SQLException - 如果发生数据库访问错误或在关闭结果集上调用此方法
3.47、getConcurrency
int getConcurrency()
throws SQLException
检索此ResultSet对象的并发模式。 所使用的并发性由创建结果集的Statement对象确定。
结果
并发类型, ResultSet.CONCUR_READ_ONLY或 ResultSet.CONCUR_UPDATABLE
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.48、rowUpdated
boolean rowUpdated()
throws SQLException
检索当前行是否已更新。 返回的值取决于结果集是否可以检测到更新。
注意:支持rowUpdated方法是可选的,结果集并发性为CONCUR_READ_ONLY
结果
true如果检测到当前行已被所有者或另一个明显更新; false否则
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.49、rowInserted
boolean rowInserted()
throws SQLException
检索当前行是否有插入。 返回的值取决于此ResultSet对象是否可以检测到可见的插入。
注意:支持rowInserted方法是可选的,结果集并发性为CONCUR_READ_ONLY
结果
true如果检测到当前行被插入; false否则
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.50、rowDeleted
boolean rowDeleted()
throws SQLException
检索行是否被删除。 删除的行可能在结果集中留下可见的“孔”。 该方法可用于检测结果集中的孔。 返回的值取决于此ResultSet对象是否可以检测到删除。
注意:支持rowDeleted方法是可选的,结果集并发性为CONCUR_READ_ONLY
结果
true如果检测到当前行被所有者或另一个删除; false否则
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.51、updateNull
void updateNull(int columnIndex)
throws SQLException
使用null值更新指定的列。 更新器方法用于更新当前行或插入行中的列值。 updater方法不更新底层数据库; 而是updateRow或insertRow方法来更新数据库。
参数
columnIndex - 第一列是1,第二列是2,...
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误; 结果集并发性是CONCUR_READ_ONLY或者这个方法在一个封闭的结果集上被调用
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3 .52、updateBoolean
void updateBoolean(String columnLabel,
boolean x)
throws SQLException
使用boolean值更新指定的列。 更新器方法用于更新当前行或插入行中的列值。 updater方法不更新底层数据库; 而是updateRow或insertRow方法来更新数据库。
参数
columnLabel - 使用SQL AS子句指定的列的标签。 如果未指定SQL AS子句,则该标签是列的名称
x - 新的列值
异常
SQLException - 如果columnLabel无效; 如果发生数据库访问错误; 结果集并发性是CONCUR_READ_ONLY或者这个方法在一个封闭的结果集上被调用
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.53、insertRow
void insertRow()
throws SQLException
将插入行的内容插入到此ResultSet对象中并进入数据库。 当调用此方法时,游标必须位于插入行上。
异常
SQLException - 如果发生数据库访问错误; 结果集并发性为CONCUR_READ_ONLY ,该方法在闭合结果集上调用,如果当游标不在插入行上时调用此方法,或者插入行中不是全部不可为空的列都被赋予非 - 空值
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.54、updateRow
void updateRow()
throws SQLException
使用此ResultSet对象的当前行的新内容更新底层数据库。 当光标在插入行上时,无法调用此方法。
异常
SQLException - 如果发生数据库访问错误; 结果集并发性为CONCUR_READ_ONLY ; 这个方法是在一个封闭的结果集上调用的,或者当光标在插入行上时调用这个方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.55、deleteRow
void deleteRow()
throws SQLException
从此ResultSet对象和底层数据库中删除当前行。 当光标在插入行上时,无法调用此方法。
异常
SQLException - 如果发生数据库访问错误; 结果集并发性为CONCUR_READ_ONLY ; 这个方法是在一个封闭的结果集上调用的,或者当光标在插入行上时调用这个方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.56、refreshRow
void refreshRow()
throws SQLException
用数据库中最新的值刷新当前行。 当光标在插入行上时,无法调用此方法。
refreshRow方法为refreshRow程序提供了一种明确告知JDBC驱动程序从数据库中提取行的方法。 当JDBC驱动程序执行缓存或预refreshRow时,应用程序可能希望调用refreshRow ,以从数据库中获取行的最新值。 如果抓取大小大于1,JDBC驱动程序可能会一次刷新多个行。
根据事务隔离级别和光标灵敏度,所有值都被刷新。 如果在调用updater方法后调用了refreshRow ,但在调用方法updateRow之前调用,那么对行的更新就会丢失。 refreshRow调用方法refreshRow可能会降低性能。
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用; 结果集类型为TYPE_FORWARD_ONLY或者当光标在插入行上时调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型和结果集并发。
3.57、cancelRowUpdates
void cancelRowUpdates()
throws SQLException
取消对此ResultSet对象中当前行的更新。 调用updateRow方法之后,调用方法updateRow之前可以调用此方法来回滚对行进行的更新。 如果没有更新或已经调用了updateRow ,则此方法无效。
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用; 结果集并发性为CONCUR_READ_ONLY或者当光标在插入行上时调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.58、moveToInsertRow
void moveToInsertRow()
throws SQLException
将光标移动到插入行。 当光标位于插入行上时,将记住当前的光标位置。 插入行是与可更新结果集相关联的特殊行。 它本质上是一个缓冲区,其中可以通过在将行插入结果集之前调用updater方法来构造新行。 当游标在插入行上时,只能调用updater,getter和insertRow方法。 在调用insertRow之前,每次调用此方法时,都必须为结果集中的所有列赋予一个值。 必须先调用updater方法,然后才能对列值调用getter方法。
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用,或者结果集并发是CONCUR_READ_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.59、moveToCurrentRow
void moveToCurrentRow()
throws SQLException
将光标移动到记住的光标位置,通常是当前行。 如果光标不在插入行上,则此方法无效。
异常
SQLException - 如果发生数据库访问错误; 这个方法在一个封闭的结果集上被调用,或者结果集并发是CONCUR_READ_ONLY
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.60、getStatement
Statement getStatement()
throws SQLException
检索Statement生成此对象ResultSet对象。 如果结果集是以某种其他方式生成的,例如通过DatabaseMetaData方法,则此方法可能会返回null 。
结果
所述 Statement生成此对象 ResultSet对象或 null如果结果集制作一些其他的方式
异常
SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法
3.61、getObject
Object getObject(int columnIndex,
Map<String,类<?>> map)
throws SQLException
以Java编程语言中的Object此ResultSet对象当前行中指定列的值。 如果该值为SQL NULL ,驱动程序将返回Java null 。 此方法使用给定的Map对象进行正在检索的SQL结构化或不同类型的自定义映射。
参数
columnIndex - 第一列是1,第二列是2,...
map - 包含从SQL类型名称到Java编程语言中的类的映射的 java.util.Map对象
结果
一个 Object SQL值的Java编程语言中的一个Object
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.62、getRef
Ref getRef(int columnIndex)
throws SQLException
将此 ResultSet对象的当前行中指定列的值作为Java编程语言中的 Ref对象检索。
参数
columnIndex - 第一列是1,第二列是2,...
结果
一个表示SQL REF值的 Ref对象
异常
SQLException - 如果columnIndex无效; 如果发生数据库访问错误或在关闭的结果集上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
3.63、isClosed
boolean isClosed()
throws SQLException
检索此ResultSet对象是否已关闭。 一个ResultSet如果close方法被调用它是封闭的,或者如果它会自动关闭。
结果
如果此ResultSet对象关闭,则为true; 如果它仍然开放,则为false
异常
SQLException - 如果发生数据库访问错误