13.1 OCCIのクラスとメソッド

表13-1は、すべてのOCCIクラスに関する簡単な説明です。この項の後で、各クラスとそのメソッドの詳細を説明します。

表13-1 OCCIクラスの概要

クラス 説明

Agentクラス

アドバンスト・キューイングのコンテキストでエージェントを表します。

AnyDataクラス

オブジェクト型トランスレータ(OTT)ユーティリティ用のメソッド、オブジェクトのシリアライズ用のSQL読取りおよび書込みメソッド、および他のデータ型間での変換を提供します。

BatchSQLExceptionクラス

バッチ処理エラーを処理するメソッドを提供します。SQLExceptionクラスの機能拡張版です。

Bfileクラス

SQL BFILE値にアクセスできます。

Blobクラス

SQL BLOB値にアクセスできます。

Bytesクラス

バイトの比較、バイトの検索およびバイトの抽出について、一連のバイトを個別に検査します。

Clobクラス

SQL CLOB値にアクセスできます。

Connectionクラス

特定のデータベースへの接続を示します。

ConnectionPoolクラス

特定のデータベースへの接続プールを示します。

Consumerクラス

Messageのデキューをサポートし、デキュー・オプションを制御します。

Dateクラス

SQL DATEデータ項目の抽象化を指定します。また、日付値のOCCIエスケープ構文をサポートするための書式操作と解析操作も提供します。

Environmentクラス

OCCIオブジェクトのメモリーや他のリソースを管理するためのOCCI環境を提供します。OCCIドライバ・マネージャはOCCI環境ハンドルにマップされます。

IntervalDSクラス

期間を日、時、分および秒で示します。

IntervalYMクラス

期間を年と月で示します。

Listenerクラス

1つ以上のキューで1つ以上のエージェントとしてリスニングします。

Mapクラス

SQL構造型のマッピングをC++クラスに格納するために使用します。

Messageクラス

エンキューまたはデキューの単位です。

MetaDataクラス

データベースの既存のスキーマ・オブジェクトまたはデータベース全体で、ResultSetの列の型とプロパティを決定するために使用します。

NotifyResultクラス

DatabaseのAQコールバック機能からの通知情報を保持するために使用します。

Numberクラス

数値型をモデル化します。

PObjectクラス

型定義の際に、永続インスタンスか一時インスタンスかの指定を可能とします。PObjectから導出されたクラス・インスタンスは、永続または一時のいずれかです。永続インスタンスであれば、PObjectから導出されたクラス・インスタンスはPObjectクラスを継承します。一時インスタンスであれば、継承は行われません。

Producerクラス

エンキュー・オプションをサポートし、Messageをエンキューします。

Refクラス

SQL REF値のC++でのマッピング。このマッピングは、データベースにあるSQL構造型の値への参照です。

RefAnyクラス

SQL REF値のC++でのマッピング。このマッピングは、データベースにあるSQL構造型の値への参照です。

ResultSetクラス

OCCIのStatementの実行で生成されたデータの表にアクセスできます。

SQLExceptionクラス

データベース・アクセス・エラーの情報を提供します。

StatelessConnectionPoolクラス

データベースに対して、認証済でステートレスな接続プールを表します。

Statementクラス

SQL文を実行するために使用します。SQL文には、問合せ文およびINSERT/UPDATE/DELETE文が含まれます。

Streamクラス

プリコンパイルされたDML文またはストアド・プロシージャ・コールにストリーム・データ(通常は、LONGデータ型)を渡すために使用します。

Subscriptionクラス

通知に対するサブスクライバの登録に必要な情報と操作をカプセル化します。

Timestampクラス

SQL TIMESTAMPデータ項目の抽象化を指定します。また、タイム・スタンプ値のOCCIエスケープ構文をサポートするための書式操作と解析操作も提供します。

13.1.1 OCCIクラスの使用

OCCIクラスは、oracle::occiネームスペースに定義されています。oracle::occiネームスペース内のOCCIクラス名は、次の3つの方法のいずれかを使用して参照できます。

  • 各OCCIクラス名に対してスコープ解決演算子(::)を使用します。

  • 各OCCIクラス名に対してusing宣言を使用します。

  • すべてのOCCIクラス名に対してusingディレクティブを使用します。

OCCIでのスコープ解決演算子の使用

スコープ解決演算子(::)は、oracle::occiネームスペースとOCCIクラス名を明示的に指定するために使用されます。ConnectionオブジェクトであるmyConnectionを宣言するには、スコープ解決演算子を使用して、次の構文で宣言します。

oracle::occi::Connection myConnection;

OCCIでの宣言の使用

using宣言は、OCCIクラス名をコンパイル・ユニットで競合せずに使用できる場合に使用されます。oracle::occiネームスペースでOCCIクラス名を宣言するには、次の構文を使用します。

using oracle::occi::Connection;

この宣言により、Connectionoracle::occi::Connectionを参照し、myConnectionConnection myConnection;として宣言できます。

OCCIでのディレクティブの使用

usingディレクティブは、すべてのOCCIクラス名をコンパイル・ユニットで競合せずに使用できる場合に使用されます。oracle::occiネームスペースですべてのOCCIクラス名を宣言するには、次の構文を使用します。

using oracle::occi;

次に、using宣言と同じように、次の宣言によってOCCIクラスConnectionConnection myConnection;として参照できます。

OCCIでのアドバンスト・キューイングの使用

アドバンスト・キューイングのクラスであるProducerConsumerMessageAgentListenerSubscriptionおよびNotifyResultは、oracle::occi::aqネームスペースに定義されています。

13.1.2 OCCIでのWindows NTおよびz/OSのサポート

WindowsでOCCIアプリケーションを構築する際に、WIN32COMMONのプリプロセッサ定義を追加する必要があります。

次のグローバル・メソッドは、Windows NTおよびz/OSでResultSetクラスおよびStatementクラスRefのコレクションにアクセスできるように設計されています。メソッド名は変更されていますが、パラメータの数と値は同じままです。

  • Windows NTおよびz/OSでは、getVector()のかわりにgetVectorOfRefs()を使用します。

  • Windows NTおよびz/OSでは、setVector()のかわりにsetVectorOfRefs()を使用します。

Windows NTおよびz/OS上のアプリケーションでは、参照のコレクションの取得および挿入時にのみ、これらの新規メソッドをコールする必要があります。Windows NTおよびz/OS上で動作しないアプリケーションでは、どちらのアクセッサを使用してもかまいません。ただし、Refでのベクター操作には新規メソッドを使用することをお薦めします。

この項には次のトピックが含まれます: 「Refのコレクションの操作」

13.1.2.1 Refのコレクションの操作

Refのコレクションは、次のクラスのメソッドを使用してフェッチおよび挿入できます。

13.1.2.1.1 ResultSetクラス

Refのコレクションのフェッチ

getVectorOfRefs()の次のバージョンを使用し、参照の列を戻します。

void getVectorOfRefs(
   ResultSet  *rs,
   unsigned int index, 
   vector<Ref<T> > &vect);
13.1.2.1.2 Statementクラス

Refのコレクションのフェッチ

getVectorOfRefs()を使用し、列からの参照のコレクションを戻します。

void getVectorOfRefs(
   Statement  *stmt,
   unsigned int index, 
   vector<Ref<T> > &vect);

Refのコレクションの挿入

setVectorOfRefs()を使用し、参照のコレクションを列に挿入します。

template  <class T>
void setVectorOfRefs(
   Statement *stmt, 
   unsigned int paramIndex,
   const vector<Ref<T> > &vect,
   const string &sqltype);

Refのコレクションの挿入: マルチバイトのサポート

マルチバイトのサポートには、次のメソッドが必要です。

void setVectorOfRefs(
   Statement *stmt,
   unsigned int paramIndex,
   const vector<Ref<T> > &vect,
   const string &schemaName,
   const string &typeName);

Refのコレクションの挿入: UString(UTF16)のサポート

UStringのサポートには、次のメソッドが必要です。

template <class T>
void setVectorOfRefs(
   Statement *stmt,
   unsigned int paramIndex,
   const vector<Ref<T> > &vect,
   const UString &schemaName,
   const UString &typeName);