スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
Blobインタフェースでは,主に次の機能が提供されます。
- バイナリデータの取得
- バイナリデータ長の取得
- パターンに一致する位置の取得
JDBCドライバは,BlobインタフェースをPrdbBlobクラスで実装します。
PrdbBlobクラスのオブジェクトは,ResultSetやCallableStatementのgetBlobメソッドの返却値として,JDBCドライバが生成します。
Blobインタフェースのメソッド一覧を次の表に示します。なお,表に記載されていないメソッドはサポートしていません。サポートしていないメソッドを指定すると,SQLExceptionを投入します。
表18-53 Blobインタフェースのメソッド一覧
(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
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.