快速业务通道

J2EE应用程序中的数据管理和数据持久性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
的方法,它的返回值是 ResultSet 对象,如列表 3 所示。

列表 3. 执行一个查询

String bar, beer ;   float price ;   ResultSet rs = stmt.executeQuery("SELECT * FROM Sells");   while ( rs.next() ) {    bar = rs.getString("bar");    beer = rs.getString("beer");    price = rs.getFloat("price");    System.out.println(bar + " sells " + beer + " for " + price + " Dollars.");   }

由于查询而产生的行集包含在变量 rs 中,该变量是 ResultSet 的一个实例。集合对于我们来说并没有太大用处,除非我们可以访问每一个行以及每一个行中的属性。 ResultSet 提供了一个光标,可以用它依次访问每一个行。光标最初被设置在正好位于第一行之前的位置。每个方法调用都会导致光标向下一行移动,如果该行存在,则返回 true ,或者如果没有剩余的行,则返回 false 。

我们可以使用适当类型的 getXXX() 来检索某一个行的属性。在前面的实例中,我们使用 getString() 和 getFloat() 方法来访问列值。注意,我们提供了其值被期望用作方法的参数的列的名称;我们可以指定用列号来代替列名。检索到的第一列的列号为 1,第二列为 2,依次类推。

在使用 PreparedStatement 时,可以通过先前插入的参数值来执行查询,然后对它调用 executeQuery() ,如下所示:

ResultSet rs = prepareUpdatePrice.executeQuery() ;

J2EE应用程序中的数据管理和数据持久性(4)

时间:2011-01-31 IBM G.V.B. Subrahmanyam

关于访问 ResultSet 的注释

JDBC 还提供一系列发现您在结果集中的位置的方法: getRow() , isFirst() , isBeforeFirst() , isLast() ,以及 isAfterLast() 。

这里还有一些使可滚动光标能够自由访问结果集中的任意行的方法。在默认情况下,光标只向前滚动,并且是只读的。在为 Connection 创建 Statement 时,可以将 ResultSet 的类型更改为更为灵活的可滚动或可更新模型,如下所示:

Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);    ResultSet rs = stmt.executeQuery("SELECT * FROM Sells");

不同的类型选项: TYPE_FORWARD_ONLY 、 TYPE_SCROLL_INSENSITIVE 和 TYPE_SCROLL_SENSITIVE 。可以通过使用 CONCUR_READ_ONLY 和 CONCUR_UPDATABLE 选项来选择光标是只读的还是可更新的。对于默认光标,可以使用 rs.next() 向前滚动它。对于可滚动的光标,您有更多的选项,如下所示:

rs.absolute(3); // moves to the third retrieved row    rs.previous(); // moves back one row in the retrieved result set    rs.relative(2); // moves forward two rows in the retrieved result set    rs.relative(-3); // moves back three rows in the retrieved result set

对于可滚动光标的工作方式,这里有更多的详细描述。尽管可滚动光标对于特定应用程序是有用的,但是它导致极大的性能损失,所以应该限制和谨慎使用。可以在 参考资料小节中找到关于可滚动 ResultSet 的更多信息。

在序列化中不存在与 JDBC 的 ResultSet 相对应的机制。序列化和 JDBC 观察底层的数据的角度不同。JDBC (通常)假定底层数据是关系型结构的;而序列化假定底层数据是一个对象图。两种技术的底层数据结构存在显著差异。JDBC 的 Set 结构并不能自然地映射到序列化的对象图结构,反之亦然。当通过使用序列化语义将一个 Java 对象持久化时,数据的底层结构变成了一个字节流,该字节流展示了已经序列化了的核心对象的各种内部对象之间的关联。

JDBC 中的 ResultSet

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号