Thread: Problem with PreparedStatement

Problem with PreparedStatement

From
"Esteban Chiner Sanz"
Date:
I'm trying to do this:

if (counter != -1) /* No ha habido ningún error */           {               PreparedStatement pstmt=null;
sql="insert into tar_historico values (?,?,?)";               razon="<br>Query: " + sql;               try {
      pstmt = con.prepareStatement(sql);                   pstmt.setString(1,Integer.toString(counter));
  pstmt.setString(2,"1");                   pstmt.setTimestamp(3,new Timestamp(new
 
java.util.Date().getTime()));                   pstmt.executeUpdate(sql);                   pstmt.close();
    con.close();               }
 

But I get this error message in the PostgreSQL log:
  query: insert into tar_historico values (?,?,?)  ERROR:  parser: parse error at or near ","

What could be the problem? I've tried everything and I haven't found the
solution yet. Please, help.
Thanks in advance,
           Esteban Chiner
------------------------------------------------------------Esteban Chiner Sanz        mailto (work):
echiner@tissat.esTISSATAv.Aragon, 30, 5ª planta  Phone: 96 393 9950Valencia (SPAIN)
 




Re: [INTERFACES] Problem with PreparedStatement

From
"Oliver Elphick"
Date:
"Esteban Chiner Sanz" wrote: >I'm trying to do this: > >if (counter != -1) /* No ha habido ningún error */ >
{>                PreparedStatement pstmt=null; >                sql="insert into tar_historico values (?,?,?)"; >
         razon="<br>Query: " + sql; >                try { >                    pstmt = con.prepareStatement(sql); >
               pstmt.setString(1,Integer.toString(counter)); >                    pstmt.setString(2,"1"); >
      pstmt.setTimestamp(3,new Timestamp(new >java.util.Date().getTime())); >
pstmt.executeUpdate(sql);>                    pstmt.close(); >                    con.close(); >                } >
>ButI get this error message in the PostgreSQL log: > >   query: insert into tar_historico values (?,?,?) >   ERROR:
parser:parse error at or near "," > >What could be the problem? I've tried everything and I haven't found the >solution
yet.Please, help. >Thanks in advance,
 
How about:   sql="insert into tar_historico values ('?','?','?')";

--      Vote against SPAM: http://www.politik-digital.de/spam/                ========================================
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver              PGP key from public servers; key
ID32B8FAA1                ========================================    "Delight thyself also in the LORD; and he shall
give     thee the desires of thine heart."          Psalms 37:4
 




Re: [INTERFACES] Problem with PreparedStatement

From
Herouth Maoz
Date:
At 19:05 +0200 on 18/10/1999, Esteban Chiner Sanz wrote:


> I'm trying to do this:
>
> if (counter != -1) /* No ha habido ningún error */
>             {
>                 PreparedStatement pstmt=null;
>                 sql="insert into tar_historico values (?,?,?)";
>                 razon="<br>Query: " + sql;
>                 try {
>                     pstmt = con.prepareStatement(sql);
>                     pstmt.setString(1,Integer.toString(counter));
>                     pstmt.setString(2,"1");
>                     pstmt.setTimestamp(3,new Timestamp(new
> java.util.Date().getTime()));
>                     pstmt.executeUpdate(sql);
>                     pstmt.close();
>                     con.close();
>                 }
>
> But I get this error message in the PostgreSQL log:
>
>    query: insert into tar_historico values (?,?,?)
>    ERROR:  parser: parse error at or near ","

What are the (Postgres) datatypes of the fields?

The best would be to know what the final format of the query became. For
this you have to run the postmaster with -d2 or something, to create a
debug-level log. It will show you the statements as they were passed to the
backend.

My personal suspicion is that your first two fields are numeric fields, not
string fields.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma




Re: [INTERFACES] Problem with PreparedStatement

From
Peter Mount
Date:
On Tue, 19 Oct 1999, Herouth Maoz wrote:

> At 19:05 +0200 on 18/10/1999, Esteban Chiner Sanz wrote:
> 
> 
> > I'm trying to do this:
> >
> > if (counter != -1) /* No ha habido ning�n error */
> >             {
> >                 PreparedStatement pstmt=null;
> >                 sql="insert into tar_historico values (?,?,?)";
> >                 razon="<br>Query: " + sql;
> >                 try {
> >                     pstmt = con.prepareStatement(sql);
> >                     pstmt.setString(1,Integer.toString(counter));
> >                     pstmt.setString(2,"1");
> >                     pstmt.setTimestamp(3,new Timestamp(new
> > java.util.Date().getTime()));
> >                     pstmt.executeUpdate(sql);
> >                     pstmt.close();
> >                     con.close();
> >                 }
> >
> > But I get this error message in the PostgreSQL log:
> >
> >    query: insert into tar_historico values (?,?,?)
> >    ERROR:  parser: parse error at or near ","
> 
> What are the (Postgres) datatypes of the fields?
> 
> The best would be to know what the final format of the query became. For
> this you have to run the postmaster with -d2 or something, to create a
> debug-level log. It will show you the statements as they were passed to the
> backend.
> 
> My personal suspicion is that your first two fields are numeric fields, not
> string fields.

My suspicion aswell. Most people forget that setString() wraps the string
in quotes when the query is sent to the backend.

Peter

--      Peter T Mount peter@retep.org.uk     Main Homepage: http://www.retep.org.uk
PostgreSQL JDBC Faq: http://www.retep.org.uk/postgresJava PDF Generator: http://www.retep.org.uk/pdf