Re: JDBC 'Unterminated quoted string'

From: Christopher Farley <chris(at)northernbrewer(dot)com>
To: Grant Finnemore <gaf(at)ucs(dot)co(dot)za>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: JDBC 'Unterminated quoted string'
Date: 2000-11-09 07:53:14
Message-ID: Pine.BSF.4.21.0011090039520.40209-100000@kraeusen.nbrewer.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

If you setString(1,null), it does work.

I am actually doing a setString(1,String.valueOf('\0')), which causes the
unterminated string error.

Although this didn't fail under the previous RDBMS (PervasiveSQL), I
have considered that setting a Java char to '\0' is just bad programming
practice. However:

- Both Postgresql and Java evaluate '\0' as ''.

- You can't set a Java char to ''.

- Many people have a need to map chars to a RDBMS

So it seems reasonable to me that the JDBC driver should escape NULL chars
as '\\0' rather than pass the character unparsed where it will be treated
as a NUL terminator when it appears in a C string.

Damn these primitive types in Java!

----
Christopher Farley
Northern Brewer / 1150 Grand Avenue / St. Paul, MN 55105
www.northernbrewer.com

On Thu, 9 Nov 2000, Grant Finnemore wrote:

> Christopher,
>
> Yep, this is the correct place to discuss bugs...
>
> I tried the following code, and it seems to work. Is this similar to what you are
> trying to do?
>
> import java.sql.*;
>
> public class JDBCTest {
> public static void main(String[] args) throws Exception {
> Class.forName("org.postgresql.Driver");
> Connection conn =
> DriverManager.getConnection("jdbc:postgresql://localhost/test",
> "jms", "jms");
> /* Before running this class, ensure that the database is created.
> * CREATE DATABASE test;
> * CREATE TABLE t ( aa char(1) );
> */
> PreparedStatement ps =
> conn.prepareStatement("insert into t values (?)");
> ps.setString(1, null);
> ps.executeUpdate();
> }
> }
>
> Also, what version of the driver are you using - is it off CVS, the version 7.0.x
> tarballs, something else?
>
> Regards,
> Grant
>
> Christopher Farley wrote:
>
> > Grant,
> > Thanks for the -d2 tip, it will make my life a lot easier for quite
> > some time!
> > Actually, I already tested the 'unescaped single quote' theory, and the
> > JDBC driver *does* escape them for you.
> > The problem in my case seems to be that the JDBC driver is throwing the
> > 'unterminated quoted string' because I am inserting a null value into a
> > char(1) field. I do not have any 'not null' constraints on the field.
> > I can easily work around this problem now that I understand it, but I'm
> > pretty sure this is not correct behavior for the JDBC driver. Is this the
> > proper forum to report bugs, if this is indeed a bug?
> >
> > ----
> > Christopher Farley
> > Northern Brewer / 1150 Grand Avenue / St. Paul, MN 55105
> > www.northernbrewer.com
>
> --
> > Poorly planned software requires a genius to write it
> > and a hero to use it.
>
> Grant Finnemore BSc(Eng) (mailto:gaf(at)ucs(dot)co(dot)za)
> Software Engineer Universal Computer Services
> Tel (+27)(11)712-1366 PO Box 31266 Braamfontein 2017, South Africa
> Cell (+27)(82)604-5536 20th Floor, 209 Smit St., Braamfontein
> Fax (+27)(11)339-3421 Johannesburg, South Africa
>
>

In response to

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message wengsoon79 2000-11-09 08:09:18 installation
Previous Message Grant Finnemore 2000-11-09 06:14:05 Re: JDBC 'Unterminated quoted string'