2023-05-03 11:06:20 +02:00
== Why is this an issue?
2021-06-04 14:23:34 +02:00
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.
2021-04-28 16:49:39 +02:00
This rule looks for invocations of the following methods on ``++TYPE_FORWARD_ONLY++`` ``++ResultSet++``s:
* ``++isBeforeFirst++``
* ``++isAfterLast++``
* ``++isFirst++``
* ``++getRow++``
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
stmt.executeQuery("SELECT name, address FROM PERSON");
ResultSet rs = stmt.getResultSet();
if (rs.isBeforeFirst()) { // Noncompliant
}
----
2023-05-03 11:06:20 +02:00
== Resources
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Related rules
2021-04-28 16:49:39 +02:00
* S2232 - "ResultSet.isLast()" should not be used
2021-04-28 18:08:03 +02:00
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
2023-05-25 14:18:12 +02:00
=== Message
Remove this call to "xxx".
2021-09-20 15:38:42 +02:00
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
2023-05-25 14:18:12 +02:00
=== 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++``
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]