关于Java Database Connectivity您不知道的5件事:提升您和JDBC API的关系 - 编程入门网
求一个可滚动的 ResultSet 的过程。事实上,在此您将为 createStatement() 使用第二个参数。您不需要为第二个参数指定 ResultSet.CONCUR_READ_ONLY,只需要发送 ResultSet.CONCUR_UPDATEABLE 即可,如清单 5 所示:
清单 5. 我想要一个可更新的 ResultSet
假设您的驱动程序支持可更新光标(这是 JDBC 2.0 规范的另一个特性,这是大多数 “现实” 数据库所支持的),您可以更新 ResultSet 中任何给定的值,方法是导航到该行并调用它的一个 update...() 方法(如清单 6 所示),如同 ResultSet 的 get...()方法。在 ResultSet 中 update...() 对于实际的列类型是超负荷的。因此要更改名为 “PRICE” 的浮点列,调用 updateFloat("PRICE")。然而,这样做只能更新 ResultSet 中的值。为了将该值插入支持它的数据库中,可以调用 updateRow()。如果用户改变调整价格的想法,调用 cancelRowUpdates() 可以停止所有正在进行的更新。 清单 6. 一个更好的方法
JDBC 2.0 不只支持更新。如果用户想要添加一个全新的行,不需要创建一个新 Statement 并执行一个 INSERT,只需要调用 moveToInsertRow(),为每个列调用 update...(),然后调用 insertRow() 完成工作。如果没有指定一个列值,数据库会默认将其看作 SQL NULL(如果数据库模式不允许该列为 NULL,这可能触发 SQLException)。 当然,如果 ResultSet 支持更新一行,也必然支持通过 deleteRow() 删除一行。 差点忘了强调一点,所有这些可滚动性和可更新性都适用于 PreparedStatement(通过向 prepareStatement() 方法传递参数),由于一直处于 SQL 注入攻击的危险中,这比一个规则的 Statement 好很多。 关于Java Database Connectivity您不知道的5件事:提升您和JDBC API的关系(3)时间:2010-11-03 IBM Ted Neward4. Rowsets 既然所有这些功能在 JDBC 中大约有 10 年了,为什么大多数开发人员仍然迷恋向前滚动 ResultSet 和不连贯访问? 罪魁祸首是可伸缩性。保持最低的数据库连接是支持大量用户通过 Internet 访问公司网站的关键。因为滚动和/或更新 ResultSet 通常需要一个开放的网络连接,而许多开发人员通常不(或不能)使用这些连接。 幸好,JDBC 3.0 引入另一种解决方案让您同样可以做很多之前使用 ResultSet 方可以做的事情,而不需要数据库连接保持开放状态。 从概念上讲,Rowset 本质上是一个 ResultSet,但是它支持连接模型或断开模型,您所需要做的是创建一个 Rowset,将其指向一个 ResultSet,当它完成自我填充之后,将其作为一个 ResultSet,如清单 7 所示: 清单 7. Rowset 取代 ResultSet
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |