Thread: setObject(int,Object) can not convert Java String object to backend's Integer type
setObject(int,Object) can not convert Java String object to backend's Integer type
From
Chen Huajun
Date:
Hi, According to JDBC Specification Java String object could be converted to backend's Integer type by setObject(). But in PostgreSQL JDBC, it's not true. It seems to be a bug. Sample: PreparedStatement stmt = con.prepareStatement("select 1::int = ?"); stmt.setObject(1, "2"); ResultSet rs = stmt.executeQuery();//raises an error here! *)but the following is OK stmt.setObject(1, "2",Types.INTEGER); stmt.setObject(1, "2",Types.OTHER); Internally stmt.setObject(1, "2") binds "2" as varchar , if it binds "2" as unspecified type,the result will be OK. Regards, Chen Huajun
Re: setObject(int,Object) can not convert Java String object to backend's Integer type
From
Dave Cramer
Date:
Chen,
This link http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/mapping.html should clarify things. The mapping is actually String to char, varchar, or longvarchar.
Dave
On Tue, Jan 8, 2013 at 6:04 AM, Chen Huajun <chenhj@cn.fujitsu.com> wrote:
Hi,
According to JDBC Specification Java String object could be converted to
backend's Integer type by setObject().
But in PostgreSQL JDBC, it's not true. It seems to be a bug.
Sample:
PreparedStatement stmt = con.prepareStatement("select 1::int = ?");
stmt.setObject(1, "2");
ResultSet rs = stmt.executeQuery();//raises an error here!
*)but the following is OK
stmt.setObject(1, "2",Types.INTEGER);
stmt.setObject(1, "2",Types.OTHER);
Internally stmt.setObject(1, "2") binds "2" as varchar ,
if it binds "2" as unspecified type,the result will be OK.
Regards,
Chen Huajun
--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc
Re: setObject(int,Object) can not convert Java String object to backend's Integer type
From
Chen Huajun
Date:
Dave > This link http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/mapping.html should clarify things. The mapping isactually String to char, varchar, or longvarchar. oh,I could not find so detailed description in my JDBC 4.0 Specification(a pdf file). And mistaked the setObject(int,Object,int) and setObject(int,Object). BTW: In Oracle,the conversion seem be OK (my test was String -> NUMERIC). That's why i pay attention to this problem. Thanks! Regards, Chen Huajun (2013/01/08 19:15), Dave Cramer wrote: > Chen, > > This link http://docs.oracle.com/javase/1.3/docs/guide/jdbc/getstart/mapping.html should clarify things. The mapping isactually String to char, varchar, or longvarchar. > > Dave > > Dave Cramer > > dave.cramer(at)credativ(dot)ca > http://www.credativ.ca > > > On Tue, Jan 8, 2013 at 6:04 AM, Chen Huajun <chenhj@cn.fujitsu.com <mailto:chenhj@cn.fujitsu.com>> wrote: > > Hi, > > According to JDBC Specification Java String object could be converted to > backend's Integer type by setObject(). > But in PostgreSQL JDBC, it's not true. It seems to be a bug. > > Sample: > PreparedStatement stmt = con.prepareStatement("select 1::int = ?"); > stmt.setObject(1, "2"); > ResultSet rs = stmt.executeQuery();//raises an error here! > > *)but the following is OK > stmt.setObject(1, "2",Types.INTEGER); > stmt.setObject(1, "2",Types.OTHER); > > > Internally stmt.setObject(1, "2") binds "2" as varchar , > if it binds "2" as unspecified type,the result will be OK. > > > > Regards, > Chen Huajun > > > > > -- > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org <mailto:pgsql-jdbc@postgresql.org>) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-jdbc > >