2010-01-15 121 views
2

我使用Connector/J 5.1.10作为我的数据库应用程序(使用MySQL)的JDBC驱动程序。MySQL JDBC驱动程序是否符合JDBC规范?

我发现虽然Statement返回的默认ResultSet是TYPE_FORWARD_ONLY类型,但我仍然可以安全地调用ResultSet上的previous()方法。

我还查看了源代码(com.mysql.jdbc.ResultSetImpl),发现它也不检查ResultSet的类型。

Connector/J是否完全不符合JDBC规范?

谢谢。

回答

1

API文档说ResultSet#previous()应该抛出一个SQLException“如果...结果集类型是TYPE_FORWARD_ONLY”,所以我猜这是假设J/Connector违反了这里的规范是安全的。

1

根据release notes该驱动程序符合Sun公开提供的所有测试。

该规范的某些部分是模糊的,mysql在发布说明中特别说明了这一点。也许规范并没有说明如果你在forward_only游标上回溯时供应商应该做什么......供应商可以选择是否抛出异常。

公开测试不能测试规范中由供应商自行决定的部分。

+0

但规范明确提到,如果我们试图在只能向前滚动的结果集上调用previous(),应该发生什么; javadoc说应该抛出SQLException。 – 2010-01-15 10:53:32