Обсуждение: query string on a prepared statement
Using pg80b1.308.jdbc3.jar got the following: (worked with
pg74.215.jdbc3.jar)
Code:
results = stmt.executeQuery("SELECT currval('LoginLog_LoginLogID_seq')");
Stack Trace:
org.postgresql.util.PSQLException: Can't use query methods that take a query
string on a PreparedStatement.
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:203)
at
org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
postgresql version: 8.0beta5
Thanks,
Roger
Roger Niederland wrote:
> Using pg80b1.308.jdbc3.jar got the following: (worked with
> pg74.215.jdbc3.jar)
>
> Code:
> results = stmt.executeQuery("SELECT currval('LoginLog_LoginLogID_seq')");
>
> Stack Trace:
> org.postgresql.util.PSQLException: Can't use query methods that take a
> query string on a PreparedStatement.
As it says, you can't use executeQuery(String) on a PreparedStatement.
Use it on a Statement created via Connection.createStatement() instead.
The JDBC spec requires that PreparedStatement throw an exception in this
case. Older drivers did not follow the spec.
-O
Similar code work previously on DB2, Mysql and earlier versions of the
released postgresql jdbc drivers. So I assumed that this was a driver
problem.
Thanks, for the quick response!
> Roger Niederland wrote:
>
>> Using pg80b1.308.jdbc3.jar got the following: (worked with
>> pg74.215.jdbc3.jar)
>>
>> Code:
>> results = stmt.executeQuery("SELECT currval('LoginLog_LoginLogID_seq')");
>>
>> Stack Trace:
>> org.postgresql.util.PSQLException: Can't use query methods that take a
>> query string on a PreparedStatement.
>
> As it says, you can't use executeQuery(String) on a PreparedStatement. Use
> it on a Statement created via Connection.createStatement() instead.
>
> The JDBC spec requires that PreparedStatement throw an exception in this
> case. Older drivers did not follow the spec.
>
> -O
>
>