Statement.execute() 方法的 GBase 8s JDBC Driver 实现返回单个 ResultSet 对象。因为服
务器不支持多个 ResultSet 对象,因此,此实现与 JDBC API 规范不同, JDBC API 规范
规定 Statement.execute() 方法可返回多个 ResultSet 对象。
GBase 8s JDBC Driver 不支持返回多个结果集。
多行的可滚动结果集
“可滚动结果集”一次从服务器访存一行。对“可滚动结果集”的性能提升允许一次访存
多行。在下列示例中,期望得到行 m 至行 n,将这些行访存至 ResultSet 内。只要仅访问
包括在 m 与 n 之间的行,
就不会发生进一步访存。
在此示例中,
期望得到行 50 至行 100,
且 ResultSet 为 SCROLL_INSENSITIVE:
rs.setFetchSize(51);
rs.absolute(49); // one row will be fetched
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 66 -
rs.next() // rs will contain 51 rows
GBase 8s 仅向前访存且仅访存一行,除非使用 DIR_NEXT 访存来访存行。对于
DIR_NEXT 操作,服务器发送行,直到填满访存缓冲区为止,或直到发送最后一行为止。
仅 ResultSet.next() 可生成 DIR_NEXT 操作。
此性能提升不更改 FORWARD_ONLY ResultSet 的行为。不更改访存缓冲区大小的计算。
对于 SCROLL_INSENTIVE ResultSet,由访存大小和行大小来确定访存缓冲区的大小。可
使用 Statement.setFetchSize() 和ResultSet.setFetchSize() 来设置访存大小。
如果访存大小为零,
则使用缺省的访存缓冲区大小。将访存缓冲区大小限定为 32 K。
某些 ResultSet methods 需要关于由查询生成的行数的信息。
这些方法可能导致访存一行来
获取信息,然后重新访存当前行。这些方法是isBeforeFirst()、isLast() 和 absolute(-row)。
此外,setMaxRows() 可为 SCROLL_INSENSITIVE ResultsSet 更改访存缓冲区大小。由于
需要附加的服务器支持来确保高效地使用setMaxRows(),在此时不推荐使
用 ResultSet.setMaxRows()。