Обсуждение: Problem with PreparedStatement
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)
"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
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
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