PreparedStatement.setNClob()の実装

まーにょとやって終了.

client-side PreparedStatementでは2GB制限が存在します.
server-side PreparedStatementではsetNClob(int,Reader,long)にて文字通りストリームを渡せば理論上無限(その前にJVM/OS/HW的限界に達するけど)大のデータを送れます.

次は何をやろうか.ResultSetに手をつけるか,CallableStatementに手をつけるかだね.ResultSetからかな.

うわ、TBスパムがきたw



MySQLのClient-Server Protocolは送信時(PreparedStatement)には各フィールドごとの文字コード設定はできない仕様になっているのだけれども,戻り値の各フィールドにはちゃんと文字コード情報が格納されている仕様になっている.

1つのテーブルの各カラムごとに別々の文字コードを設定できます,というのに対応した際,C/Jは各フィールドの文字コード情報を読んでnew String(byte[], encoding)するように既になっている.

ちなみにこの文字コードMySQLプロトコル的コード番号のcp932とeucjpmsのものがC/J側のテーブルに追加されていなかったので追加したよーというのが2005年5月頃の話だ.ここで散々書いていた話.

さておきとりあえずResultSetで追加実装しないと行けないのは,getNClobとgetNCharacterSteramとgetNStringかな.updateほにゃららはとりあえず無視.

実装仕様からまたちょい考えるべ.