Re: query string on a prepared statement

Lists: pgsql-jdbc
From: "Roger Niederland" <roger(at)niederland(dot)com>
To: <pgsql-jdbc(at)postgresql(dot)org>
Subject: query string on a prepared statement
Date: 2004-11-24 20:41:47
Message-ID: 001501c4d266$055d3c30$0c02010a@RogerPortable
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

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


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Roger Niederland <roger(at)niederland(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: query string on a prepared statement
Date: 2004-11-24 22:33:20
Message-ID: 41A50C30.9000108@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

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


From: "Roger Niederland" <roger(at)niederland(dot)com>
To: "Oliver Jowett" <oliver(at)opencloud(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: query string on a prepared statement
Date: 2004-11-24 22:50:00
Message-ID: 002801c4d277$ee33a640$0c02010a@RogerPortable
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc


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
>
>