# 結果セットと列のストリーミング

もし元となるオブジェクトがOutputStreamクラスであれば、getBinaryStreamはそのオブジェクトを直接返します。

可能な型であればgetXXXStreamメソッドにより、列をストリーミングしてResultSetからフィールドを取得することができます。 何らかのストリームを利用可能な型の一覧については、ストリーム可能なJDBCのデータ型を参照してください。(また、SQL型とjava.sql.Typesの対応も参照してください。)

実際にストリームとして記録されているか否かにかかわらず、型に従いストリームとして取得することが可能か決まります。

次の例ではLONG VARCHARの列がストリームとして取得されます。

    // データをストリームとして取得する。
    ResultSet rs = s.executeQuery("SELECT b FROM atable");
    while (rs.next()) {
        // java.io.InputStreamを使ってデータを取得する。
        java.io.InputStream ip = rs.getAsciiStream(1);
        // ストリームを処理する。--これはデータを出力する
        // 一般的なやり方である。
        int c;
        int columnSize = 0;
        byte[] buff = new byte[128];
        for (;;) {
            int size = ip.read(buff);
            if (size == -1)
                break;
            columnSize += size;
            String chunk = new String(buff, 0, size);
            System.out.print(chunk);
        }
    }
    rs.close();
    s.close();
    conn.commit();

親トピック: java.sql.ResultSet インターフェイス