ResultSet 提供了通过执行一条语句访问所生成的数据表的功能。按顺序获取表中的行。在一行内它的列值可以以任意顺序访问。
ResultSet 控制一个指向当前数据行的游标。初始,游标定位于第一行之前。用 'next' 方法可把游标移到下一行。
getXXX 方法获取当前行的列值。可通过使用列的索引或名字来获取值。通常使用列索引会更有效。列索引从 1 开始。
最大概率下,每行的 ResultSet 列应按照从左到右的顺序获取,并且每列只读一次。
对 getXXX 方法,JDBC 驱动程序试图把基础数据转换为指定的 Java 类型并返回一个合适的 Java 值。参见关于使用 ResultSet.getXXX 方法从 SQL 类型到 Java 类型进行映射的 JDBC 规范。
输入到 getXXX 方法的列名是大小写敏感的。当使用列名执行一个 getXXX 方法时,如果几个列有同样的名字,则返回第一个匹配的列。当列名用于 SQL 查询时,指定使用列名选项。对在查询中没有明确命名的列,最好使用列编号。如果使用列名,则无法对编程者保证他们实际使用了所想要的列。
ResultSet 由生成它的语句自动关闭、再执行或从多个结果的序列中获取下一个结果。
ResultSet 列的编号、类型和特性由 getMetaData 方法返回的 ResulSetMetaData 对象提供。
接口 java.sql.ResultSet
- public interface ResultSet
- 参见:
- executeQuery, getResultSet, ResultSetMetaData
方法索引
- clearWarnings()
- 此调用完成之后,getWarnings 返回 null 直到为该 ResultSet 报告了一个新的警告为止。
- close()
- 在很多情况下,在语句自动关闭时立即释放该语句的数据库和 JDBC
资源是需要的;close 方法既就是这种立即释放的方法。
- findColumn(String)
- 映射一个 Resultset 列名到 ResultSet 列索引号。
- getAsciiStream(int)
- 把列值作为一个 ASCII 字符流获取,然后成批地从流中读出。
- getAsciiStream(String)
- 把列值作为一个 ASCII 字符流获取,然后成批地从流中读出。
- getBigDecimal(int, int)
- 把当前行的列值作为 java.lang.BigDecimal 对象获取。
- getBigDecimal(String, int)
- 把当前行的列值作为 java.lang.BigDecimal 对象获取。
- getBinaryStream(int)
- 把列值作为一个未解释的字节流来获取,然后再从流中成批读出。
- getBinaryStream(String)
- 把列值作为一个未解释的字节流来获取,然后再从流中成批读出。
- getBoolean(int)
- 把当前行的列值作为一个 Java boolean 获取。
- getBoolean(String)
- 把当前行的列值作为一个 Java boolean 获取。
- getByte(int)
- 把当前行的列值作为一个 Java byte 获取。
- getByte(String)
- 把当前行的列值作为一个 Java byte 获取。
- getBytes(int)
- 把当前行的列值作为一个 Java byte 数组获取。
- getBytes(String)
- 把当前行的列值作为一个 Java byte 数组获取。
- getCursorName()
- 获取 ResultSet 的 SQL 游标名。
- getDate(int)
- 把当前行的列值作为一个 java.sql.Date 对象获取。
- getDate(String)
- 把当前行的列值作为一个 java.sql.Date 对象获取。
- getDouble(int)
- 把当前行的列值作为一个 Java double 获取。
- getDouble(String)
- 把当前行的列值作为一个 Java double 获取。
- getFloat(int)
- 把当前行的列值作为一个 Java float 获取。
- getFloat(String)
- 把当前行的列值作为一个 Java float 获取。
- getInt(int)
- 把当前行的列值作为一个 Java int 获取。
- getInt(String)
- 把当前行的列值作为一个 Java int 获取。
- getLong(int)
- 把当前行的列值作为一个 Java long 获取。
- getLong(String)
- 把当前行的列值作为一个 Java long 获取。
- getMetaData()
- ResultSet 的列编号、类型和特性由 getMetaData 方法提供。
- getObject(int)
- 把当前行的列值作为一个 Java 对象获取。
- getObject(String)
- 把当前行的列值作为一个 Java 对象获取。
- getShort(int)
- 把当前行的列值作为一个 Java short 获取。
- getShort(String)
- 把当前行的列值作为一个 Java short 获取。
- getString(int)
- 把当前行的列值作为一个 Java String 获取。
- getString(String)
- 把当前行的列值作为一个 Java String 获取。
- getTime(int)
- 把当前行的列值作为一个 java.sql.Time 对象获取。
- getTime(String)
- 把当前行的列值作为一个 java.sql.Time 对象获取。
- getTimestamp(int)
- 把当前行的列值作为一个 java.sql.Timestamp 对象获取。
- getTimestamp(String)
- 把当前行的列值作为一个 java.sql.Timestamp 对象获取。
- getUnicodeStream(int)
- 列值可作为一个 Unicode 字符流来获取,然后从流中成批读出。
- getUnicodeStream(String)
- 列值可作为一个 Unicode 字符流来获取,然后从流中成批读出。
- getWarnings()
- 返回在这个 ResultSet 上的调用报告的第一个警告。
- next()
- ResultSet 初始定位于它的第一行之前;对 next 的第一个调用使得第一行成为当前行;第二个调用使得第二行成为当前行,等等。
- wasNull()
- 列可能有值 SQL NULL ;wasNull 报告是否所读的最后一列有这个特殊的值。
方法
next
public abstract boolean next() throws SQLException
- ResultSet 初始定位于它的第一行之前;对 next 的第一个调用使得第一行成为当前行;第二个调用使得第二行成为当前行,等等。
如果来自先前行的输入流是打开的,则它被隐含地关闭。当读一个新行时,ResultSet 的警告链被清除。
- 返回值:
- 如果当前行有效,返回 true ;如果没有更多的行则返回 false
- 抛出:
SQLException
- 如果发生了数据访问错误。
close
public abstract void close() throws SQLException
- 在多情况下,在语句自动关闭时立即释放该语句的数据库和 JDBC 资源是需要的;close 方法提供了这种立即释放方法。
注意: ResultSet 由生成它的语句自动关闭、再执行或用于从多个结果的序列中获取下一个结果。
ResultSet 被垃圾箱收集时也自动关闭。
- 抛出:
SQLException
- 如果发生了数据访问错误。
wasNull
public abstract boolean wasNull() throws SQLException
- 列可能有值 SQL NULL ;wasNull 报告是否读的最后一列有这个特殊的值。
注意,您必须先对列调用 getXXX 方法来尽量读它的值并调用 wasNull() 方法来查找值是否为 SQL NULL 。
- 返回值:
- 如果读的最后列为 SQL NULL 返回 true
- 抛出:
SQLException
- 如果发生了数据访问错误。
getString
public abstract String getString(int columnIndex) throws SQLException
- 把当前行的列值作为一个 Java String 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBoolean
public abstract boolean getBoolean(int columnIndex) throws SQLException
- 把当前行的列值作为一个 Java boolean 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 false
- 抛出:
SQLException
- 如果发生了数据访问错误。
getByte
public abstract byte getByte(int columnIndex) throws SQLException
- 把当前行的列值作为一个 Java byte 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getShort
public abstract short getShort(int columnIndex) throws SQLException
- 把当前行的列值作为一个 Java short 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getInt
public abstract int getInt(int columnIndex) throws SQLException
- 把当前行的列值作为 Java int 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getLong
public abstract long getLong(int columnIndex) throws SQLException
- 把当前行的列值作为 Java long 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getFloat
public abstract float getFloat(int columnIndex) throws SQLException
- 把当前行的列值作为 Java float 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDouble
public abstract double getDouble(int columnIndex) throws SQLException
- 把当前行的列值作为 Java double 获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBigDecimal
public abstract BigDecimal getBigDecimal(int columnIndex,
int scale) throws SQLException
- 获取当前行的列值作为 java.lang.BigDecimal 对象。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- scale - 小数点右边的数字数目
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBytes
public abstract byte[] getBytes(int columnIndex) throws SQLException
- 把当前行的列值作为一个 Java byte 数组获取。
字节描述了驱动程序返回的未加工的值。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDate
public abstract Date getDate(int columnIndex) throws SQLException
- 把当前行的列值作为一个 java.sql.Date 对象获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTime
public abstract Time getTime(int columnIndex) throws SQLException
- 把当前行的列值作为 java.sql.Time 对象获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTimestamp
public abstract Timestamp getTimestamp(int columnIndex) throws SQLException
- 把当前行的列值作为 java.sql.Timestamp 对象获取。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getAsciiStream
public abstract InputStream getAsciiStream(int columnIndex) throws SQLException
- 列值可作为 ASCII 字符流获取,然后成批从流中读出。 该方法特别适合于获取大的 LONGVARCHAR 值。
JDBC 驱动程序将做从数据库格式到 ASCII 的任何必要的转换。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。. 而且,一个流可能为 available() 方法返回 0 ,不管数据是否可用。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 把数据库列值作为单字节的 ASCII 字符流释放的 Java 输入流。如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getUnicodeStream
public abstract InputStream getUnicodeStream(int columnIndex) throws SQLException
- 列值可作为一个 Unicode 字符流来获取,然后从流中成批读出。该方法特别适用于获取大的 LONGVARCHAR 值。
JDBC 驱动程序将做从数据库格式到 Unicode 的任何必要的转换。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。. 而且,一个流可能为 available() 方法返回 0 ,不管数据是否可用。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 把数据库列值作为一个两字节的 Unicode 字符流释放的 Java 输入流。 如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBinaryStream
public abstract InputStream getBinaryStream(int columnIndex) throws SQLException
- 列值可作为一个未解释的字节流来获取,然后从流中成批读出。该方法特别适用于获取大的 LONGVARBINARY 值。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。而且,一个流可能为 available() 方法返回 0 ,不管数据是否可用。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 把数据库列值作为一个未解释的字节流释放的 Java 输入流。如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getString
public abstract String getString(String columnName) throws SQLException
- 获取当前行的列值作为一个 Java String 。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBoolean
public abstract boolean getBoolean(String columnName) throws SQLException
- 把当前行的列值作为 Java boolean 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 false
- 抛出:
SQLException
- 如果发生了数据访问错误。
getByte
public abstract byte getByte(String columnName) throws SQLException
- 把当前行的列值作为 Java byte 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getShort
public abstract short getShort(String columnName) throws SQLException
- 把当前行的列值作为 Java short 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getInt
public abstract int getInt(String columnName) throws SQLException
- 把当前行的列值作为 Java int 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getLong
public abstract long getLong(String columnName) throws SQLException
- 把当前行的列值作为 Java long 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getFloat
public abstract float getFloat(String columnName) throws SQLException
- 把当前行的列值作为 Java float 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDouble
public abstract double getDouble(String columnName) throws SQLException
- 把当前行的列值作为 Java double 获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBigDecimal
public abstract BigDecimal getBigDecimal(String columnName,
int scale) throws SQLException
- 把当前行的列值作为 java.lang.BigDecimal 对象获取。
- 参数:
- columnName - 列的 SQL 名
- scale - 小数点右边的数字数目
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBytes
public abstract byte[] getBytes(String columnName) throws SQLException
- 把当前行的列值作为 Java byte 数组获取。
字节描述了驱动程序返回的未加工的值。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getDate
public abstract Date getDate(String columnName) throws SQLException
- 把当前行的列值作为一个 java.sql.Date 对象获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTime
public abstract Time getTime(String columnName) throws SQLException
- 把当前行的列值作为 java.sql.Time 对象获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getTimestamp
public abstract Timestamp getTimestamp(String columnName) throws SQLException
- 把当前行的列值作为 java.sql.Timestamp 对象获取。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 列值;如果值是 SQL NULL, 结果为 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
getAsciiStream
public abstract InputStream getAsciiStream(String columnName) throws SQLException
- 列值可作为 ASCII 字符流获取,然后从流中读入到块中。 该方法特别适合于获取大的 LONGVARCHAR 值。
JDBC 驱动程序将做从数据库格式到 ASCII 的任何必要的转换。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 把数据库列值作为一个一字节的 ASCII 字符流释放的 Java 输入流。如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getUnicodeStream
public abstract InputStream getUnicodeStream(String columnName) throws SQLException
- 列值可作为一个 Unicode 字符流来获取,然后从流中成批读出。 该方法特别适用于获取大的 LONGVARCHAR 值。
JDBC 驱动程序将做从数据库格式到 Unicode 的任何必要的转换。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 把数据库列值作为一个两字节的 Unicode 字符流释放的 Java 输入流。 如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getBinaryStream
public abstract InputStream getBinaryStream(String columnName) throws SQLException
- 列值可作为一个未解释的字节流来获取,然后从流中成批读出。该方法特别适用于获取大的 LONGVARBINARY 值。
注意: 返回流的所有数据必须在获取任何其它列的值之前先读。下一个对 get 方法的调用隐含地关闭了流。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 把数据库列值作为一个未解释字节流释放的 Java 输入流。 如果值是 SQL NULL 则结果是 null。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getWarnings
public abstract SQLWarning getWarnings() throws SQLException
-
返回由在这个 ResultSet 上的调用报告的第一个警告。后继的 ResultSet 警告将被链接到这个 SQLWarning 上。
每次读一个新行时,警告链被自动清除。
注意: 该警告链仅包含了由 ResultSet 方法引起的警告。由语句方法(如读 OUT 参数)引起的任何警告将被链接到语句对象上。
- 返回值:
- 第一个 SQLWarning 或 null
- 抛出:
SQLException
- 如果发生了数据访问错误。
clearWarnings
public abstract void clearWarnings() throws SQLException
- 此调用完成之后,getWarnings 返回 null 直到为该 ResultSet 报告了一个新的警告为止。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getCursorName
public abstract String getCursorName() throws SQLException
- 获取 ResultSet 的 SQL 游标名。
在 SQL 中, 一个结果表可以通过命名的游标来读取。结果的当前行可通过使用引用游标名的已经定位的更新/删除语句来更新或删除。
JDBC 通过提供 ResultSet 使用的 SQL 游标名支持这个 SQL 特征。
ResultSet 的当前行也是这个 SQL 游标的当前行。
注意: 如果不支持定位的更新,则抛出 SQLException
- 返回值:
- ResultSet 的 SQL 游标名
- 抛出:
SQLException
- 如果发生了数据访问错误。
getMetaData
public abstract ResultSetMetaData getMetaData() throws SQLException
- ResultSet 的列编号、类型和特性由 getMetaData 方法提供。
- 返回值:
- ResultSet 的列的描述
- 抛出:
SQLException
- 如果发生了数据访问错误。
getObject
public abstract Object getObject(int columnIndex) throws SQLException
-
获取当前行的列值作为一个 Java 对象 。
该方法将返回给定的列的值作为一个 Java 对象。Java 对象的类型将是对应于列的 SQL 类型的缺省的 Java 对象类型,依附于 JDBC spec 中指定的映射。
该方法也可用于读特定于数据库的抽象数据类型。
- 参数:
- columnIndex - 第一个列是 1, 第二个列是 2, ...
- 返回值:
- 保持列值的 java.lang.Object 。
- 抛出:
SQLException
- 如果发生了数据访问错误。
getObject
public abstract Object getObject(String columnName) throws SQLException
-
把当前行的列值作为 Java 对象获取。
该方法将返回给定的列的值作为一个 Java 对象。Java 对象的类型将是对应于列的 SQL 类型的缺省的 Java 对象类型,依附于 JDBC spec 中指定的映射。
该方法也可用于读特定于数据库的抽象数据类型。
- 参数:
- columnName - 列的 SQL 名
- 返回值:
- 保持列值的 java.lang.Object 。
- 抛出:
SQLException
- 如果发生了数据访问错误。
findColumn
public abstract int findColumn(String columnName) throws SQLException
- 映射一个 Resultset 列名到 ResultSet 列号。
- 参数:
- columnName - 列名
- 返回值:
- 列索引
- 抛出:
SQLException
- 如果发生了数据访问错误。