JDBC底子教程之ResultSet对象[Java编程]
本文“JDBC底子教程之ResultSet对象[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
概述
ResultSet 包含符合 SQL 语句中条件的全部行,并且它通过一套 get 办法(这些 get 办法可以拜候当前行中的差别列)供应了对这些行中数据的拜候.ResultSet.next 办法用于移动到 ResultSet 中的下一行,使下一行成为当前行.
后果集普通是一个表,此中有查询所返回的列标题及呼应的值.比方,假如查询为 SELECT a, b, c FROM Table1,则后果集将具有以下情势:
a b c
-------- --------- --------
12345 Cupertino CA
83472 Redmond WA
83492 Boston MA
下面的代码段是履行 SQL 语句的示例.该 SQL 语句将返回行调集,此中列 1 为 int,列 2 为 String,而列 3 则为字节数组:
java.sql.Statement stmt = conn.createStatement();
ResultSet r = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (r.next())
{
// 打印当前行的值.
int i = r.getInt("a");
String s = r.getString("b");
float f = r.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}
1、行和光标
ResultSet 保护指向其当前数据行的光标.每调用一次 next 办法,光标向下移动一行.最初它位于第一行之前,因此第一次调用 next 将把光标置于第一行上,使它成为当前行.随着每次调用 next 招致光标向下移动一行,按照从上至下的次序获得ResultSet 行.
在 ResultSet 对象或其父辈 Statement 对象关闭之前,光标一向保持有效.
在 SQL 中,后果表的光标是闻名字的.假如数据库答应定位更新或定位删除,则需求将光标的名字作为参数供应应更新或删除号令.可通过调用办法getCursorName 得到光标名.
注意:不是全部的 DBMS 都支持定位更新和删除.可以利用 DatabaseMetaData.supportsPositionedDelete 和 supportsPositionedUpdate 办法来查抄特定衔接能否支持这些操作.当支持这些操作时,DBMS/驱动程序必须确保得当锁定选定行,以使定位更新不会招致更新非常或别的并发问题.
2、列
办法 getXXX 供应了获得当前行中某列值的途径.在每一行内,可按任何次序获得列值.但为了保证可移植性,应当从左至右获得列值,并且一次性地读取列值.列名或列号可用于标识要从中获得数据的列.比方,假如 ResultSet 对象 rs 的第二列名为“title”,并将值存储为字符串,则下列任一代码将获得存储在该列中的值:
String s = rs.getString("title");
String s = rs.getString(2);
注意列是从左至右编号的,并且从列 1 开始.同时,用作 getXXX 办法的输入的列名不辨别大小写.
供应利用列名这个选项的目的是为了让在查询中指定列名的用户可以利用相同的名字作为 getXXX 办法的参数.另一方面,假如 select 语句未指定列名(比方在“select * from table1”中或列是导出的时),则应当利用列号.这些情形下,
户将无法切当知道列名.
有些情形下,SQL 查询返回的后果集合大概有多个列具有相同的名字.假如列名用作 getXXX 办法的参数,则 getXXX 将返回第一个匹配列名的值.因而,假如多个列具有相同的名字,则需求利用列索引来确保检索了精确的列值.这时,利用列号效率要略微高一些.
关于 ResultSet 中列的信息,可通过调用办法 ResultSet.getMetaData 得到.返回的 ResultSetMetaData 对象将给出其 ResultSet 对象各列的编号、范例和属性.
假如列名已知,但不知其索引,则可用办法 findColumn 得到其列号.
以上是“JDBC底子教程之ResultSet对象[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |