操作手順
データベースのBLOBデータを参照する場合、以下の手順で行います。

記述例
データベースのBLOBデータを参照する場合の記述例を以下に説明します。
Statement stmt = con.createStatement(); (1)
ResultSet rs = stmt.executeQuery(
"SELECT COL_BLOB FROM BLOBTBL WHERE COL_INT = 1"); (2)
while (rs.next()) (3)
{
InputStream oIS = rs.getBinaryStream(1); (4)
FileOutputStream fs = new FileOutputStream("ファイル名などを指定"); (4)
byte[] bTmp = new byte[oIS.available()]; (5)
oIS.read(bTmp); (5)
fs.write(bTmp); (5)
int iBData=0; (6)
while ((iBData=oIS.read()) != -1) (6)
{
fs.write(iBData); (6)
}
oIS.close(); (7)
fs.close(); (7)
}
rs.close(); (8)
stmt.close(); (8)
con.commit(); (9)(1) SQL文を実行するためのオブジェクトの生成
(2) ResultSetオブジェクトの生成
(3) カーソルの位置づけ
(4) ResultSetオブジェクトからのデータ取得
(5) ストリームからのデータ読込み(byte配列)
(6) ストリームからのデータ読込み(1バイト)
(7) ストリームオブジェクトのクローズ
(8) オブジェクトのクローズ
(9) トランザクションのコミット
注意
(5)と(6)の処理は、データのサイズ、件数または実行環境に合わせて、以下の要領で、どちらかを実行してください。
ストリームからデータを一括で取り出す場合、(5)の処理を実行する
ストリームからデータを1バイトずつ取り出す場合、(6)の処理を実行する
参照先のBLOBデータのサイズが32キロバイト以上の場合、同じBLOB列に対して複数回getXXX()を実行することはできません。複数回実行した場合、2回目以降の実行では、長さは0のByte配列を返却します。同じBLOB列のデータを再取得したい場合、absolute()などを使用して、ResultSetの現在行を移動してください。
以下に各項目の設定方法を示します。