Обсуждение: Result Set FORWARD_ONLY
I'm having trouble setting the result set to anything but FORWARD_ONLY.
If I do this:
pstmt = conn.prepareStatement("select name, name from amz.product_detail_items order by name");
rs = pstmt.executeQuery();
rs.setFetchDirection(ResultSet.TYPE_SCROLL_INSENSITIVE);
I get:
org.postgresql.util.PSQLException: Invalid fetch direction constant: 1,004.
I get the same error if I set it on the pstmt object before executing the query.
Using version 311 of the JDBC driver and 8.0.2.
Thanks,
Jeff
Jeffrey Melloy wrote:
> pstmt = conn.prepareStatement("select name, name from
> amz.product_detail_items order by name");
> rs = pstmt.executeQuery();
> rs.setFetchDirection(ResultSet.TYPE_SCROLL_INSENSITIVE);
>
> I get:
>
> org.postgresql.util.PSQLException: Invalid fetch direction constant: 1,004.
The driver is working correctly here.
You can only set the resultset type when creating the statement, like so:
> pstmt = conn.prepareStatement("select name, name from amz.product_detail_items order by name",
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet.setFetchDirection() is used to hint to the driver about the
expected order of resultset use, not to set the resultset type. It
expects one of ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or
ResultSet.FETCH_UNKNOWN. The driver is (correctly) complaining that
you're giving it some other value.
The java.sql javadoc covers all this.
-O