我使用Connector / J 5.1.10作为我的数据库应用程序(使用MySQL)的JDBC驱动程序。
我发现尽管Statement返回的默认ResultSet的类型为TYPE_FORWARD_ONLY,但我仍然能够安全地调用ResultSet上的previous()方法。
我还查看了源代码( com.mysql.jdbc.ResultSetImpl ),发现它也没有对ResultSet的类型进行任何检查。
Connector / J是否完全符合JDBC规范?
感谢。
答案 0 :(得分:1)
根据release notes,驱动程序符合Sun公开提供的所有测试。
规范的某些部分是模糊的,mysql在发行说明中明确说明了这一点。也许规范没有说明如果你遍历一个forward_only游标,供应商应该做什么......供应商可以选择是否向您抛出异常。
公开测试不能测试规范中由供应商自行决定的部分。
答案 1 :(得分:1)
API文档说ResultSet#previous()应该抛出一个SQLException“如果...结果集类型是TYPE_FORWARD_ONLY”,所以我想可以安全地假设J / Connector违反了规范。