java – JDBC ResultSet是应用程序级查询游标

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.

那么,JDBC实现是否是模仿数据库游标实现的数据访问规范,即使数据库不支持这样的功能呢?
最佳答案
你当然可以这样想.所有这些概念都是从ODBC继承的,所以你可以感谢(责备?)历史记录.大多数dbs都没有广泛支持游标,因为在JDBC等API中提供了这些功能.特别是在MySQL中,从MySQL 5.0开始支持游标“fetch”,这意味着驱动程序不会被强制读取整个结果,无论是否需要.这意味着可以在很少或没有成本的情况下尽早放弃结果集.但是,需要额外的往返来定期请求行块. MySQL Connector / J默认情况下不强制执行FORWARD_ONLY语义,并将整个结果缓存在客户端中,允许“可滚动性”.但是,由于服务器中的实现,这不允许对在其他事务中提交的更改敏感.通常可以模仿/模拟功能,以提供API的便利性.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。