Blobクラス

Blobクラスは、BLOB型オブジェクトの共通プロパティを定義します。BLOBは、データベース表の行の列値として格納されるラージ・バイナリ・オブジェクトです。Blobオブジェクトには、BLOBへの論理ポインタが含まれていますが、BLOB自体は含まれていません。

Blobクラスのメソッドを使用すると、Blobオブジェクトに関連する特定のタスクを実行できます。

getBlob()setBlob()など、ResultSetクラスとStatementクラスのメソッドによって、SQL BLOBの値にアクセスできます。

NULLBlobオブジェクトに対する有効なメソッドは、setName()isNull()およびoperator=()のみです。

未初期化のBlobオブジェクトは、次の方法で初期化できます。

  • setEmpty()メソッドを実行します。次に、このBLOBを表に挿入してBLOBを変更すると、SELECT...FOR UPDATEを使用してその内容を取り出すことができます。write()メソッドによってBLOBは変更されますが、変更されたデータは、トランザクションがコミットされたときにのみ表にフラッシュされます。UPDATEは必要ありません。

  • 初期化したBlobオブジェクトを割り当てます。

関連項目:

表13-8 Blobメソッドの概要

メソッド 概要

Blob()

Blobクラスのコンストラクタです。

append()

指定したBLOBを現行のBLOBの最後に追加します。

close()

前にオープンしたBLOBをクローズします。

closeStream()

BLOBから取得したStreamオブジェクトをクローズします。

copy()

BFILEまたはBLOBの指定部分を現行のBLOBにコピーします。

getChunkSize()

BLOBへの効率的な書込みを実行するための最小データ・サイズを戻します。

getContentType()

Blobのコンテンツ・タイプを戻します。

getOptions()

指定したLobOptionTypeに対するBLOBLobOptionValueを戻します。

getStream()

StreamオブジェクトとしてBLOBからデータを戻します。

isInitialized()

Blobオブジェクトが初期化されているかどうかを確認します

isNull()

BlobオブジェクトがアトミックNULLかどうかをテストします。

isOpen()

BLOBがオープンしているかどうかを確認します。

length()

BLOBのバイト数を戻します。

open()

BLOBを読取り専用または読取り/書込みアクセスでオープンします。

operator=()

BLOBロケータをBlobオブジェクトに割り当てます。

operator==()

2つのBlobオブジェクトが等しいかどうかを確認します。

operator!= ()

2つのBlobオブジェクトが等しくないかどうかを確認します。

read()

BLOBの一部をバッファに読み取ります。

setContentType()

Blobのコンテンツ・タイプを設定します。

setEmpty()

Blobオブジェクトを空に設定します。

setNull()

BlobオブジェクトをアトミックNULLに設定します。

setOptions()

特定のLobOptionTypeに対してLobOptionValueを指定します。BLOBの高度な圧縮、暗号化および重複除外を有効化します。

trim()

BLOBを指定した長さに切り捨てます。

write()

バッファをオープンされていないBLOBに書き込みます。

writeChunk()

バッファをオープンされているBLOBに書き込みます。

Blob()

Blobクラスのコンストラクタです。

構文 説明
Blob();

NULLBlobオブジェクトを作成します。

Blob(
   const Connection *connectionp);

未初期化のBlobオブジェクトを構築します。

Blob(
   const Blob &srcBlob);

Blobオブジェクトのコピーを作成します。

パラメータ 説明
connectionp

接続ポインタを指定します。

srcBlob

コピー元のBlobオブジェクトを指定します。

append()

BLOBを現行のBLOBの最後に追加します。

構文

void append(
   const Blob &srcBlob);
パラメータ 説明
srcBlob

現行のBLOBオブジェクトに追加するBLOBオブジェクトを指定します。

close()

BLOBをクローズします。

構文

void close();

closeStream()

BLOBから取得したStreamオブジェクトをクローズします。

構文

void closeStream(
   Stream *stream);
パラメータ 説明
stream

クローズするStreamを指定します。

copy()

BFILEまたはBLOBの一部またはすべてを現行のBLOBにコピーします。

構文 説明
void copy(
   const Bfile &srcBfile,
   unsigned int numBytes,
   unsigned int dstOffset = 1,
   unsigned int srcOffset = 1);

BFILEの一部を現行のBLOBにコピーします。

void copy(
   const Blob &srcBlob,
   unsigned int numBytes,
   unsigned int dstOffset = 1,
   unsigned int srcOffset = 1);

BLOBの一部を現行のBLOBにコピーします。

コピー先のBLOBが重複除外に対応しており、コピー元およびコピー先のBLOBが同じ列内にある場合、新規BLOBがコピー・オン・ライトとして作成されます。コピー元のBLOBから他のすべての設定が継承されます。コピー先のBLOBが重複除外に対応していない場合、BLOBの完全に新しいコピーとなります。

パラメータ 説明
srcBfile

データのコピー元のBFILEを指定します。

srcBlob

データのコピー元のBLOBを指定します。

numBytes

ソースBFILEまたはソースBLOBからコピーするバイト数を指定します。有効な値は0 (ゼロ)以上の数値です。

dstOffset

現行のBLOBに書き込むデータの開始位置を指定します。有効な値は、1以上の数値です。

srcOffset

ソースBFILEまたはソースBLOBから読み取るデータの開始位置を指定します。有効な値は、1以上の数値です。

getChunkSize()

BLOBへの効率的な書込みを実行するための最小データ・サイズを戻します。

構文

unsigned int getChunkSize() const;

getContentType()

Blobのコンテンツ・タイプを戻します。コンテンツ・タイプが割り当てられていない場合は、NULL文字列を戻します。

構文

string getContentType();

getOptions()

指定したLobOptionTypeに対するBLOBLobOptionValueを戻します。

BLOBが格納されたデータベース列またはパーティションに対して設定されていないオプションの値を取得しようとすると、例外が発生します。

構文

LobOptionValue getOptions(
   LobOptionType optType);
パラメータ 説明
optType

要求されるLobOptionTypeの設定です。これらの設定は、サーバーのラウンドトリップを避けるために、ビット単位のor (|)を使用して結合できます。表7-1表7-2を参照してください

getStream()

BLOBからStreamオブジェクトを戻します。ストリームがオープンしている場合、別のストリームをBlobオブジェクトでオープンすることはできません。したがって、ユーザーは、Blobオブジェクト操作を実行する前に、ストリームを常にクローズする必要があります。

構文

Stream* getStream(
   unsigned int offset = 1,
   unsigned int amount = 0);
パラメータ 説明
offset

BLOBから読み取るデータの開始位置を指定します。offsetが未指定の場合、データはBLOBの最初から書き込まれます。有効な値は、1以上の数値です。

amount

BLOBから読み取るバイトの合計数を指定します。amount0 (ゼロ)の場合は、入力offsetの位置からBLOBの終わりまでのデータがストリーム・モードで読み取られます。

isInitialized()

Blobオブジェクトが初期化されているかどうかを確認します。Blobオブジェクトが初期化されている場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isInitialized() const;

isNull()

BlobオブジェクトがアトミックNULLかどうかをテストします。BlobオブジェクトがアトミックNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isNull() const;

isOpen()

BLOBがオープンしているかどうかを確認します。BLOBがオープンしている場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isOpen() const;

length()

BLOBのバイト数を戻します。

構文

unsigned int length() const;

open()

BLOBを読取り/書込みまたは読取り専用モードでオープンします。

構文

void open(
   LobOpenMode mode = OCCI_LOB_READWRITE);
パラメータ 説明
mode

BLOBをオープンするモードを指定します。有効な値は次のとおりです。

  • OCCI_LOB_READWRITE

  • OCCI_LOB_READONLY

operator=()

現行のBLOBBLOBを割り当てます。割当て元BLOBは、割当て先BLOBが表に格納されているときにのみ、その割当て先BLOBにコピーされます。

構文

Blob& operator=(
   const Blob &srcBlob);
パラメータ 説明
srcBlob

データのコピー元のBLOBを指定します。

operator==()

2つのBlobオブジェクトを比較して、等しいかどうかを調べます。2つのBlobオブジェクトが同じBLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのBlobオブジェクトがNULLの場合は、等しいとは判断されません。Blobオブジェクトが等しい場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool operator==(
   const Blob &srcBlob) const;
パラメータ 説明
srcBlob

現行のBLOBと比較するソースBLOBを指定します。

operator!= ()

2つのBlobオブジェクトを比較して、等しくないかどうかを調べます。2つのBlobオブジェクトが同じBLOBを参照している場合、それらのオブジェクトは等しいと判断されます。2つのBlobオブジェクトがNULLの場合は、等しいとは判断されません。2つのBlobオブジェクトが等しくない場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool operator!=(
   const Blob &srcBlob) const;
パラメータ 説明
srcBlob

現行のBLOBと比較するソースBLOBを指定します。

read()

BLOBの一部またはすべてをバッファに読み取ります。実際に読み取られたバイト数が戻ります。

構文

unsigned int read(
   unsigned int amt,
   unsigned char *buffer,
   unsigned int bufsize,
   unsigned int offset = 1) const;
パラメータ 説明
amt

読み取るバイト数を指定します。有効な値は、1以上の数値です。

buffer

BLOBデータを読み取るバッファを指定します。有効な値は、amt以上の数値です。

buffsize

BLOBデータを読み取るバッファのサイズを指定します。有効な値は、amt以上の数値です。

offset

BLOBから読み取るデータの開始位置を指定します。offsetが未指定の場合、データはBLOBの最初から書き込まれます。

setContentType()

Blobのコンテンツ・タイプを設定します。BlobがSecureFileでない場合は、例外が発生します。

構文

void setContentType(
   const string contenttype);
パラメータ 説明
contenttype

Blobのコンテンツ・タイプを指定します。ASCII Mime対応の文字列です。

setEmpty()

Blobオブジェクトを空に設定します。

構文 説明
void setEmpty();

Blobオブジェクトを空に設定します。

void setEmpty(
   const Connection* connectionp);

Blobオブジェクトを空に設定し、渡されたパラメータへの接続ポインタを初期化します。

パラメータ 説明
connectionp

BLOBオブジェクトの新しい接続ポインタを指定します。

setNull()

BlobオブジェクトをアトミックNULLに設定します。

構文

void setNull();

setOptions()

特定のLobOptionTypeに対してLobOptionValueを指定します。BLOBの高度な圧縮、暗号化および重複除外を有効化します。表7-1表7-2を参照してください。

BLOBが格納されたデータベース列またはパーティションに対して設定されていないオプションを設定または設定解除しようとすると、例外が発生します。

暗号化されたBLOB列で暗号化をオフにしようとすると、例外が発生します。

構文

void setOptions(
   LobOptionType optType,
   LobOptionValue optValue);
パラメータ 説明
optType

指定されているLobOptionTypeの設定です。これらの設定は、サーバーのラウンドトリップを避けるために、ビット単位のor (|)を使用して結合できます。

optValue

optTypeパラメータで指定されたLobOptionTypeLobOptionValue設定です。

trim()

BLOBを新しく指定した長さに切り捨てます。

構文

void trim(
   unsigned int newlen);
パラメータ 説明
newlen

BLOBの新しい長さを指定します。有効な値は、BLOBの現在の長さ以下の数値です。

write()

バッファのデータをBLOBに書き込みます。このメソッドは、BLOBを暗黙的にオープンしてバッファのデータをBLOBにコピーし、BLOBを暗黙的にクローズします。BLOBがオープンしている場合は、かわりにwriteChunk()を使用します。実際に書き込まれたバイト数が戻されます。

構文

unsigned int write(
   unsigned int amt,
   unsigned char *buffer,
   unsigned int bufsize,
   unsigned int offset = 1);
パラメータ 説明
amt

BLOBに書き込むバイト数を指定します。

buffer

BLOBに書き込むデータが含まれているバッファを指定します。

buffsize

BLOB書き込むデータが含まれているバッファのサイズを指定します。有効な値は、amt以上の数値です。

offset

BLOBに書き込むデータの開始位置を指定します。offsetが未指定の場合、データはBLOBの最初から書き込まれます。有効な値は、1以上の数値です。

writeChunk()

バッファのデータを前にオープンしたBLOBに書き込みます。実際に書き込まれたバイト数が戻されます。

構文

unsigned int writeChunk(
   unsigned int amount,
   unsigned char *buffer,
   unsigned int bufsize,
   unsigned int offset = 1);
パラメータ 説明
amt

BLOBに書き込むバイト数を指定します。

buffer

BLOBに書き込むデータが含まれているバッファを指定します。

buffsize

BLOBに書き込むデータが含まれているバッファのサイズを指定します。有効な値は、amt以上の数値です。

offset

BLOBに書き込むデータの開始位置を指定します。offsetが未指定の場合、データはBLOBの最初から書き込まれます。有効な値は、1以上の数値です。