Re: Jdbc4ResultSet getClob and getBlob are calling getLong internally
От | Nedim Cholich |
---|---|
Тема | Re: Jdbc4ResultSet getClob and getBlob are calling getLong internally |
Дата | |
Msg-id | 2f8a6c901002011239r40e7cdd4k66321122e12829a6@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Jdbc4ResultSet getClob and getBlob are calling getLong internally (Kris Jurka <books@ejurka.com>) |
Ответы |
Re: Jdbc4ResultSet getClob and getBlob are calling
getLong internally
Re: Jdbc4ResultSet getClob and getBlob are calling getLong internally |
Список | pgsql-jdbc |
On Mon, Feb 1, 2010 at 15:15, Kris Jurka <books@ejurka.com> wrote: > On Mon, 1 Feb 2010, Nedim Cholich wrote: >> After getting 'org.postgresql.util.PSQLException: Bad value for type >> long' I found these two methods in Jdbc4ResultSet: >> >> public java.sql.Clob getClob(int i) throws SQLException >> { >> return new Jdbc4Clob(connection, getLong(i)); >> } >> >> Calling getLong here has to be wrong? >> > > No. Large Objects are not stored directly inline, but as a pointer to other > storage. The getLong is retrieving the external storage which Jdbc4Clob > will then stream from the server on demand. You are probably trying to call > getClob on a text or varchar column and that's not going to work. It might > be nice to provide that interface, but there's no benefit (other than > compatibility) to the user. If you have text data stored inline, then it's > already been transferred over to the client side in the ResultSet, so > there's no point in using a streaming interface. Yes, it's a TEXT column and yes I'm calling rs.getClob(columnName); What am I suppose to call instead? The above call produces: ... blah ... Caused by: org.postgresql.util.PSQLException: Bad value for type long : url=http://<removed> at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2796) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2019) at org.postgresql.jdbc4.Jdbc4ResultSet.getClob(Jdbc4ResultSet.java:43) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getClob(AbstractJdbc2ResultSet.java:384) getFixedString(columnIndex) method called from AbstractJdbc2ResultSet:2019 is returning an actual column value (String) which toLong is trying to convert to long and failing. Thanks! What am I missing?
В списке pgsql-jdbc по дате отправления: