== Why is this an issue?

The implementation of certain ``++ResultSet++`` methods is optional for result sets of type ``++TYPE_FORWARD_ONLY++``. Even if your current JDBC driver does implement those methods, there's no guarantee you won't change drivers in the future.


This rule looks for invocations of the following methods on ``++TYPE_FORWARD_ONLY++`` ``++ResultSet++``s:

* ``++isBeforeFirst++``
* ``++isAfterLast++``
* ``++isFirst++``
* ``++getRow++``


=== Noncompliant code example

[source,java]
----
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
stmt.executeQuery("SELECT name, address FROM PERSON");
ResultSet rs = stmt.getResultSet();

if (rs.isBeforeFirst()) { // Noncompliant

}
----

== Resources

=== Related rules

* S2232 - "ResultSet.isLast()" should not be used


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Remove this call to "xxx".


'''
== Comments And Links
(visible only on this page)

=== on 5 Dec 2014, 07:51:51 Nicolas Peru wrote:
This one will require CFG to limit the number of false positive to add some constraints on the "stmt" variable to be able to determine which statement are indeed created with ``++ResultSet.TYPE_FORWARD_ONLY++``

endif::env-github,rspecator-view[]
