PreparedStatement.setNCharacterStream()の引数の件(その2)
JDBC 4.0のExpertGroup Memberの一人であるMark Matthews氏にこの件について聞きました.
void setNCharacterStream(int, Reader, long)
これは第3引数はlongでなければならないということです.
何故か?
LOBは2^32バイト以上のサイズを取り得るから.(2^32=4G)
以上.うがー orz
じゃあ,同じJDBC 4.0で
void setCharacterStream(int, Reader, int)
こっちは何で第3引数がintなのかというと,これはJDBC 3.0以下との後方互換性維持のためだそうです.
そういえばJDBC 4.0仕様書の「目的の概要」のところに「9. 既存のアプリケーションおよびドライバとの間の後方互換性を維持」て書いてありましたね.
ぎゃああ (T_T)
まあExpertGroupのミーティングでそんな話があったそうな.
(JDBC 3.0以下は間違えてたってことかな?)
てことで,setNCharacterStreamの実装,再検討しないとだ.NClob実装はちょい待ち.