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実装はちょい待ち.