スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

18.4.9 Blobインタフェース

<この項の構成>
(1) 概要
(2) メソッド
(3) パッケージ名称及びクラス名称

(1) 概要

Blobインタフェースでは,主に次の機能が提供されます。

JDBCドライバは,BlobインタフェースをPrdbBlobクラスで実装します。

PrdbBlobクラスのオブジェクトは,ResultSetやCallableStatementのgetBlobメソッドの返却値として,JDBCドライバが生成します。

(2) メソッド

Blobインタフェースのメソッド一覧を次の表に示します。なお,表に記載されていないメソッドはサポートしていません。サポートしていないメソッドを指定すると,SQLExceptionを投入します。

表18-53 Blobインタフェースのメソッド一覧

記載箇所 メソッド 機能
(a) getBinaryStream() BLOB又はBINARY値をストリーム(PrdbDataStreamオブジェクト)として返します。
(b) getBytes(long pos, int length) BLOB又はBINARY値の全部又は一部をバイト配列として返します。
(c) length() このPrdbBlobオブジェクトによって指定されたBLOB又はBINARY値のバイト数を返します。
(d) position(Blob pattern, long start) PrdbBlobオブジェクトによって指定されたBLOB又はBINARY値内で,patternが始まるバイト位置を返します。
(e) position(byte[] pattern, long start) このBlobオブジェクトが表すBLOB値内で,指定されたバイトpatternが始まるバイト位置を返します。
(a) getBinaryStream()

【機能】
BLOB又はBINARY値をストリーム(PrdbDataStreamオブジェクト)として返します。

【形式】
 
public InputStream getBinaryStream() throws SQLException
 

【引数】
なし。

【戻り値】
InputStreamを派生したPrdbDataStreamを返します。

【機能詳細】
BLOB又はBINARY値をストリーム(PrdbDataStreamオブジェクト)として返します。
位置付け子機能使用時は,PrdbResultSetオブジェクトから位置付け子を取得し,取得した位置付け子をPrdbDataStreamクラスのコンストラクタに渡してPrdbDataStreamオブジェクトを生成します。
位置付け子機能使用時は,PrdbDataStreamオブジェクト内部にBLOB又はBINARY値を保持していないため,データ取得要求が行われるたびにHiRDBサーバに対してデータ取得要求を行います。
位置付け子機能を使用していない場合はPrdbResultSetオブジェクトからBLOB又はBINARY値を取得し,取得した値をPrdbDataStreamクラスのコンストラクタに渡してPrdbDataStreamオブジェクトを生成します。この場合は,BLOB又はBINARY値を保持してるため,HiRDBサーバに対してデータ取得要求は行いません。

【発生する例外】
次の場合,SQLExceptionを投入します。
  • 位置付け子機能使用時に,このPrdbBlobオブジェクトに関連しているPrdbConnection,PrdbStatement,PrdbResultSetオブジェクトがcloseされている場合
  • トランザクションの決着によってPrdbBlobオブジェクトが無効になった場合
  • 位置付け子機能使用時に,通信エラーなどでデータが取得できなかった場合
(b) getBytes(long pos,int length)

【機能】
BLOB又はBINARY値の全部又は一部をバイト配列として返します。バイト配列には,posの位置からlengthの連続するバイト数を格納します。

【形式】
 
public byte[] getBytes(long pos,int length) throws SQLException
 

【引数】
long pos:
BLOB値内の最初に抽出されるバイトの位置(序数)
最初のバイトの位置は1
int length:
コピー対象の連続するバイトの数

【戻り値】
BLOB又はBINARY値内の,posの位置からlengthの連続するバイト数が格納されている配列

【機能詳細】
BLOB又はBINARY値の全部又は一部をバイト配列として返します。バイト配列には,posの位置からlengthの連続するバイト数を格納します。
posとlengthの指定値と返されるデータを次に示します。
pos length 実長(X)※1 制限値※2とlength 制限値※2と実長(X)※1 返されるデータ
1<=pos<=実長(X)※1 <0 SQLException
>=0 <=length Y<制限値 実長(Y)の長さのBLOB又はBINARY値
Y>=制限値 制限値の長さのBLOB又はBINARY値
Y>length length<制限値 lengthで指定された長さのBLOB又はBINARY値
length>=制限値 制限値の長さのBLOB又はBINARY値
>実長(X)※1 0長データ
上記以外 SQLException

(凡例)
−:該当しません。

注※1
実長(X)とは,取得可能なBLOB又はBINARY値の実長(BLOB又はBINARY値の実長−引数pos+1)を示します。

注※2
制限値は,MaxFieldSize又はHiRDB_for_JAVA_MAX_BINARY_SIZEが該当します。制限値として有効になる値を次に示します。

MaxFieldSize HiRDB_for_Java_MAX_BINARY_SIZE HiRDBのデータ型 取得できるデータの最大長(制限値)
0(デフォルト) 0(デフォルト) 全データ型 定義長(デフォルト)
0(デフォルト) >0(指定有り) BLOB又はBINARY型 HiRDB_for_Java_MAX_BINARY_SIZE
BLOB又はBINARY型以外 定義長(デフォルト)
>0(指定有り) 0(デフォルト) 全データ型 MaxFieldSize
>0(指定有り) >0(指定有り) 全データ型 MaxFieldSize

注※
文字型(HiRDBデータ型のCHAR,VARCHAR,NCHAR.NVARCHAR,MCHAR,MVARCHARが該当)

【発生する例外】
次の場合,SQLExceptionを投入します。
  • 引数posが<1又は引数lengthが<0の場合
  • トランザクションの決着によってPrdbBlobが無効の場合
  • 位置付け子機能使用時に,このPrdbBlobオブジェクトに関連しているPrdbConnection,PrdbStatement,PrdbResultSetオブジェクトがcloseされている場合
  • 位置付け子機能使用時に,通信エラーなどでデータが取得できなかった場合
(c) length()

【機能】
このPrdbBlobオブジェクトによって指定されたBLOB又はBINARY値のバイト数を返します。

【形式】
 
public long length() throws SQLException
 

【引数】
なし。

【戻り値】
BLOB又はBINARY値の長さ(バイト単位)

【発生する例外】
次の場合,SQLExceptionを投入します。
  • このPrdbDataStreamクラスがcloseされている場合
  • 位置付け子機能使用時に,PrdbDataStreamオブジェクトに関連したPrdbConnection,PrdbStatement,PrdbResultSetオブジェクトがcloseされている場合
  • トランザクションの決着によってPrdbDataStreamが無効になった場合
  • 位置付け子機能使用時に,通信エラーなどでデータが取得できなかった場合
(d) position(Blob pattern, long start)

【機能】
PrdbBlobオブジェクトによって指定されたBLOB又はBINARY値内で,patternが始まるバイト位置を返します。patternの検索は,startの位置から開始します。

【形式】
 
public long position(Blob pattern, long start) throws SQLException
 

【引数】
Blob pattern:
検索対象のBLOB又はBINARY値を指定するBlobオブジェクト
long start:
検索を開始するBLOB又はBINARY値内の位置。最初の位置は1です。

【戻り値】
pattrenで指定されたデータが開始する位置

【発生する例外】
次の場合,SQLExceptionを投入します。
  • このPrdbDataStreamクラスがcloseされている場合
  • 位置付け子機能使用時に,PrdbDataStreamオブジェクトに関連したPrdbConnection,PrdbStatement,PrdbResultSetオブジェクトがcloseされている場合
  • トランザクションの決着によってPrdbDataStreamが無効になった場合
  • 位置付け子機能使用時に,通信エラーなどでデータが取得できなかった場合
(e) position(byte[] pattern, long start)

【機能】
このBlobオブジェクトが表すBLOB値内で,指定されたバイトpatternが始まるバイト位置を返します。patternの検索は,startの位置から開始します。

【形式】
 
public long position(byte[] pattern, long start) throws SQLException
 

【引数】
byte[] pattern:
検索対象のbyte[]
long start:
検索を開始するBLOB値内の位置。最初の位置は1です。

【戻り値】
pattrenで指定されたデータが開始する位置

【発生する例外】
次の場合,SQLExceptionを投入します。
  • このPrdbDataStreamクラスがcloseされている場合
  • 位置付け子機能使用時に,PrdbDataStreamオブジェクトに関連したPrdbConnection,PrdbStatement,PrdbResultSetオブジェクトがcloseされている場合
  • トランザクションの決着によってPrdbDataStreamが無効になった場合
  • 位置付け子機能使用時に,通信エラーなどでデータが取得できなかった場合

(3) パッケージ名称及びクラス名称

このインタフェースを実装するパッケージ名称とクラス名称を次に示します。

パッケージ名称:JP.co.Hitachi.soft.HiRDB.JDBC

クラス名称:PrdbBlob