根据我的经验,大多数情况下您只需要单向读取数据。说实话,我甚至从来不需要使用TYPE_FORWARD_ONLY
以外的其他东西(除了在测试JDBC驱动程序时)。我知道它有时用在交互式GUI应用程序中,它提供了可编辑的表格视图,但即使对于这些类型的系统,我仍会考虑不同的设计。
阅读在一个方向的结果集具有许多优点:
- 这是非常简单的,所以大多数数据库系统支持它,它通常是相当快
- 它具有较少的开销,因为服务器只需要提供一次一排,然后可以忘掉它
缺点:
- 你不能回滚或跳转到结果集中的'随机'点(可疑的恕我直言,我从来不需要它)
- 在某些数据库系统或驱动程序上(如现在删除 - 由sForSujit ),只需要完全读取仅前向结果集(或者驱动程序将关闭其余部分)
相比之下,滚动结果集基本上具有与仅前向的缺点相同的优势。
然而
缺点可滚动的结果集:
- 更多的开销,因为服务器需要“记住”行其附带以前,或者能够滚动/跳跃前进(虽然有减少的技巧该开销以换取更复杂性)
- 并非所有的数据库系统都支持它,这意味着它可能会被驱动程序“模拟”。这可能会导致额外的内存和网络开销(因为整个结果集被提取到内存中)。
- 根据滚动类型(特别是类型敏感),可能会逐行提取行,这会增加获取所有数据所需的往返次数(如果它获取多个,则“随机”跳跃结果集可能意味着检索到的附加数据被丢弃而未被使用)。
请注意,此列表可能不完整。
这一切都在[JDBC教程](http://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html)中讨论过,你知道的。 – EJP
我已经通过该文档。但是,我无法找到我在那里询问的具体问题的答案。如果你能指出某些回答具体问题的东西,我将非常感激。 –