EBIHARA, Yuichiro wrote on 22.06.2007 08:34:
> Thomas,
>
> Thank you for your comment.
>
>> I found that using getBinaryStream(), setBinaryStream(),
>> getCharacterStream()
>> and setCharacterStream() to handle LOBs across different DBMS
>> is much more
>> portable (and reliably) than using the Clob()/Blob() methods.
>
> According to JDBC 3.0 specifiction, those 4 methods may not be compatible to BLOB/CLOB.
> Some databases may support them to access LOB data but not all databases.
>
Hmm. At least for updating LOBs, "my method" should be "legal".
This is a quote from jdbc-3_0-fr-spec.pdf
"The setBinaryStream and setObject methods may also be used to set a Blob
object as a parameter in a PreparedStatement object. The setAsciiStream,
setCharacterStream, and setObject methods are alternate means of setting a
Clob object as a parameter."
But I have to admit that I never read the specs in detail until now. Those
methods were simply working fine (and were the only reliable way to handle LOBs
with the Oracle drivers).
Btw: these methods are working (for me) with Oracle, SQL Server (jTDS and MS
Driver), DB2 (8.x), Firebird, Derby, MySQL, HSQL, H2, Informix and Sybase
Adaptive Server Anywhere.
But I do think that the exception thrown when using getClob() or getBlob() is an
error in the JDBC driver. Maybe we should file an issue for this.
Regards
Thomas