Symfoware Server アプリケーション開発ガイド(JDBCドライバ編) - FUJITSU -
目次 索引 前ページ次ページ

第3章 アプリケーションの作成

3.7 BLOBデータの参照

■操作手順

データベースの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)の処理は、データのサイズ、件数または実行環境に合わせて、以下の要領で、どちらかを実行してください。

以下に各項目の設定方法を示します。

◆SQL文を実行するためのオブジェクトの生

ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。

◆ResultSetオブジェクトの生

StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。

◆カーソルの位置づ

ResultSetインタフェースのnextメソッドを使用し、カーソルの位置づけを現在の位置から1行下に移動します。

◆ResultSetオブジェクトからのデータ取

ResultSetインタフェースのgetBinaryStreamメソッドを使用し、ResultSetオブジェクトからBLOB型のデータをストリームとして取得します。

◆ストリームからのデータ読込み(byte配列)

InputStreamクラスのreadメソッドを使用して、ストリームからデータをbyte配列で一括に読み込みます。

◆ストリームからのデータ読込み(1バイト)

InputStreamクラスのreadメソッドを使用して、ストリームからデータを1バイトずつ-1(データなし)が返却されるまで読み込みます。

◆ストリームオブジェクトのクロー

InputStreamクラスのcloseメソッドとFileOutputStreamクラスのcloseメソッドを使用して、オブジェクトをクローズします。

◆オブジェクトのクロー

生成した各クラスのオブジェクトをクローズします。

ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。

◆トランザクションのコミッ

トランザクションをコミットします。

Connectionインタフェースのcommitメソッドを使用します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2007