Re: create tables and prepared statements with params

Поиск
Список
Период
Сортировка
От Mark Lewis
Тема Re: create tables and prepared statements with params
Дата
Msg-id 1158168051.9657.1272.camel@archimedes
обсуждение исходный текст
Ответ на create tables and prepared statements with params  ("Enrique Rodríguez Lasterra"<lasterra@javahispano.org>)
Ответы Re: create tables and prepared statements with params
Список pgsql-jdbc
In 8.x the driver uses "real" server-side prepared statements.  In 7.4.x
the driver did string replacements before submitting statements to the
server.

There are pros and cons to server-side prepared statements.  They're
mostly a very good thing, but you're running into one of the
limitations; the driver can only put variables in places where the
server allows variables.  CREATE TABLE isn't one of those places.

Your best bet with the 8.x driver is to perform the string replacement
yourself.

[Question to the list: this should be on the FAQ.  How could I go about
submitting patches to the FAQ page?]

-- Mark Lewis

On Wed, 2006-09-13 at 19:10 +0200, Enrique Rodríguez Lasterra wrote:
>  get an error when i create a table using preparedstatement with some
> parameters "?".
>
> Is this a non standard function?
>
> With JDBC 7.4 it runs prefectly but with 8.x no. With 8.x if i don't
> use params the table is created without errors
>
> Here is all the info.
>
> Regards, Enrique
>
> Code
>
> package test;
>
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.PreparedStatement;
>
> /**
> * DB
> *
> * @version 1.0
> * @since 13-sep-2006
> */
> public class DB {
>    public static void main(String[] args) {
>        Connection connection = null;
>        try {
>            Class.forName("org.postgresql.Driver");
>            connection =
> DriverManager.getConnection("jdbc[tongue]ostgresql://192.168.4.221/canyamo-test",
> "canyamo-test", "canyamo-test");
>            PreparedStatement stmt =
> connection.prepareStatement("create table orders ( id integer not
> null, client character varying(15) default ? not null)");
>            stmt.setObject(1, "without-name");
>
>            stmt.executeUpdate();//stmt.execute();
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>    }
> }
>
> Exception
>
> org.postgresql.util.PSQLException: ERROR: there is no parameter $1
>        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1527)
>        at org.postgresql.core.v3.QueryExecutorImpl.processResults
> (QueryExecutorImpl.java:1311)
>        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:190)
>        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
>        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
>        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:308)
>        at test.DB.main(DB.java:23)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:324)
>        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
>
>
> Versions
> JDBC: 8.1.404
> Database: 8.1.4
>
>
>

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: "Enrique Rodríguez Lasterra"
Дата:
Сообщение: PreparedStatement and CreateTable
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: create tables and prepared statements with params