Thread: query string on a prepared statement

query string on a prepared statement

From
"Roger Niederland"
Date:

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



Re: query string on a prepared statement

From
Oliver Jowett
Date:
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

Re: query string on a prepared statement

From
"Roger Niederland"
Date:
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
>
>