Re: JDBC 'Unterminated quoted string'

Поиск
Список
Период
Сортировка
От Christopher Farley
Тема Re: JDBC 'Unterminated quoted string'
Дата
Msg-id Pine.BSF.4.21.0011090039520.40209-100000@kraeusen.nbrewer.com
обсуждение исходный текст
Ответ на Re: JDBC 'Unterminated quoted string'  (Grant Finnemore <gaf@ucs.co.za>)
Список 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 по дате отправления:

Предыдущее
От: Grant Finnemore
Дата:
Сообщение: Re: JDBC 'Unterminated quoted string'
Следующее
От: wengsoon79@catcha.com
Дата:
Сообщение: installation