database cursor定义与JDBC ResultSet API非常相似.
>数据库光标可以像ResultSet.TYPE_FORWARD_ONLY那样仅向前.
>数据库光标可以滚动,甚至可以像ResultSet.TYPE_SCROLL_SENSITIVE一样进行灵敏度设置.
> ResultSet.HOLD_CURSORS_OVER_COMMIT也支持可保持性
>甚至对位置更新/删除的支持也被复制到JDBC ResultSet.CONCUR_UPDATABLE中
但尽管有这些相似之处,MySQL doesn’t support database cursors:
MysqL does not support sql cursors,and the JDBC driver doesn’t
emulate them,so setCursorName() has no effect.
最佳答案
你当然可以这样想.所有这些概念都是从ODBC继承的,所以你可以感谢(责备?)历史记录.大多数dbs都没有广泛支持游标,因为在JDBC等API中提供了这些功能.特别是在MysqL中,从MysqL 5.0开始支持游标“fetch”,这意味着驱动程序不会被强制读取整个结果,无论是否需要.这意味着可以在很少或没有成本的情况下尽早放弃结果集.但是,需要额外的往返来定期请求行块. MysqL Connector / J默认情况下不强制执行FORWARD_ONLY语义,并将整个结果缓存在客户端中,允许“可滚动性”.但是,由于服务器中的实现,这不允许对在其他事务中提交的更改敏感.通常可以模仿/模拟功能,以提供API的便利性.
@H_403_23@