gpt4 book ai didi

java.sql.结果集 : flawed by design?

转载 作者:行者123 更新时间:2023-11-29 06:09:32 24 4
gpt4 key购买 nike

这是 java.sql.ResultSet.next() 的签名:

public boolean next() throws SQLException

众所周知,如果 ResultSet 中有更多行可用,该方法将返回 true。但是,如果抛出 SQLException 怎么办?我无法获得 next() 的返回值,因此我无法知道是否有更多记录可用(没有 hasNext 方法的痕迹进入界面)。

让我们换个视角。我正在研究需要容错的 JDBC 驱动程序(它从 csv 读取)。如果在错误的行之后有更多行可用,我如何让我的用户知道?

最佳答案

该 API 设计没有任何问题。next() - 将光标从当前位置向前移动一行。所以 JDBC 驱动程序只有一个结果集的游标。每次调用 next() 方法时,它都会通过该游标从数据库中获取每一行。在处理大量行作为查询表的一部分的情况下,遇到一些“异常”是合乎逻辑的。

由于您正在“设计”您自己的基于 csv 的驱动程序,您可以自由更改 next() API 的行为。虽然签名声明它可能会抛出 SQLException,但您可以对 next 方法的实现进行编码,使其返回一个空的或部分填充的对象,以使其具有容错性。

有一些过时的技术可以查找 ResultSet 中的记录总数 - 例如调用 last(),然后调用 ResultSet::getRow() 以在开始迭代之前找出记录数。

关于java.sql.结果集 : flawed by design?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com