Re: JDBC 'Unterminated quoted string' - Mailing list pgsql-interfaces
From | Christopher Farley |
---|---|
Subject | Re: JDBC 'Unterminated quoted string' |
Date | |
Msg-id | Pine.BSF.4.21.0011090039520.40209-100000@kraeusen.nbrewer.com Whole thread Raw |
In response to | Re: JDBC 'Unterminated quoted string' (Grant Finnemore <gaf@ucs.co.za>) |
List | 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@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: