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?