Re: JDBC 'Unterminated quoted string' - Mailing list pgsql-interfaces

From Grant Finnemore
Subject Re: JDBC 'Unterminated quoted string'
Date
Msg-id 3A0A68FF.35ACA12C@ucs.co.za
Whole thread Raw
In response to Re: JDBC 'Unterminated quoted string'  (Christopher Farley <chris@northernbrewer.com>)
List pgsql-interfaces
Christopher,

A patch for the postgresql driver - class PreparedStatement.java in both jdbc1 and
jdbc2.

274,285c274
<
<                 /* If the string contains a null zero, when it reaches the
<                  * backend, the C routines to manipulate a string will
<                  * assume that the string is finished at this point. This
<                  * will result in an 'Unterminated string constant' error
<                  * from the backend. Hence, before inserting the character,
<                  * check if it is a null zero, and if so, escape it.
<                  */
<                 if (c != '\0')
<                   b.append(c);
<                 else
<                   b.append("\\0");
---
>   b.append(c);

Regards,
Grant

Christopher Farley wrote:

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

--
> Poorly planned software requires a genius to write it
> and a hero to use it.

Grant Finnemore BSc(Eng)  (mailto:gaf@ucs.co.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




pgsql-interfaces by date:

Previous
From: wengsoon79@catcha.com
Date:
Subject: installation
Next
From: Phil Davey
Date:
Subject: Re: Access 2000 and empty fields