13.1 OCCIのクラスとメソッド
表13-1は、すべてのOCCIクラスに関する簡単な説明です。この項の後で、各クラスとそのメソッドの詳細を説明します。
表13-1 OCCIクラスの概要
| クラス | 説明 |
|---|---|
|
アドバンスト・キューイングのコンテキストでエージェントを表します。 |
|
|
オブジェクト型トランスレータ(OTT)ユーティリティ用のメソッド、オブジェクトのシリアライズ用のSQL読取りおよび書込みメソッド、および他のデータ型間での変換を提供します。 |
|
|
バッチ処理エラーを処理するメソッドを提供します。SQLExceptionクラスの機能拡張版です。 |
|
|
SQL |
|
|
SQL |
|
|
バイトの比較、バイトの検索およびバイトの抽出について、一連のバイトを個別に検査します。 |
|
|
SQL |
|
|
特定のデータベースへの接続を示します。 |
|
|
特定のデータベースへの接続プールを示します。 |
|
|
|
|
|
SQL DATEデータ項目の抽象化を指定します。また、日付値のOCCIエスケープ構文をサポートするための書式操作と解析操作も提供します。 |
|
|
OCCIオブジェクトのメモリーや他のリソースを管理するためのOCCI環境を提供します。OCCIドライバ・マネージャはOCCI環境ハンドルにマップされます。 |
|
|
期間を日、時、分および秒で示します。 |
|
|
期間を年と月で示します。 |
|
|
1つ以上のキューで1つ以上のエージェントとしてリスニングします。 |
|
|
SQL構造型のマッピングをC++クラスに格納するために使用します。 |
|
|
エンキューまたはデキューの単位です。 |
|
|
データベースの既存のスキーマ・オブジェクトまたはデータベース全体で、 |
|
|
DatabaseのAQコールバック機能からの通知情報を保持するために使用します。 |
|
|
数値型をモデル化します。 |
|
|
型定義の際に、永続インスタンスか一時インスタンスかの指定を可能とします。 |
|
|
エンキュー・オプションをサポートし、 |
|
|
SQL REF値のC++でのマッピング。このマッピングは、データベースにあるSQL構造型の値への参照です。 |
|
|
SQL REF値のC++でのマッピング。このマッピングは、データベースにあるSQL構造型の値への参照です。 |
|
|
OCCIの |
|
|
データベース・アクセス・エラーの情報を提供します。 |
|
|
データベースに対して、認証済でステートレスな接続プールを表します。 |
|
|
SQL文を実行するために使用します。SQL文には、問合せ文およびINSERT/UPDATE/DELETE文が含まれます。 |
|
|
プリコンパイルされたDML文またはストアド・プロシージャ・コールにストリーム・データ(通常は、LONGデータ型)を渡すために使用します。 |
|
|
通知に対するサブスクライバの登録に必要な情報と操作をカプセル化します。 |
|
|
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;
この宣言により、Connectionはoracle::occi::Connectionを参照し、myConnectionをConnection myConnection;として宣言できます。
OCCIでのディレクティブの使用
usingディレクティブは、すべてのOCCIクラス名をコンパイル・ユニットで競合せずに使用できる場合に使用されます。oracle::occiネームスペースですべてのOCCIクラス名を宣言するには、次の構文を使用します。
using oracle::occi;
次に、using宣言と同じように、次の宣言によってOCCIクラスConnectionをConnection myConnection;として参照できます。
OCCIでのアドバンスト・キューイングの使用
アドバンスト・キューイングのクラスであるProducer、Consumer、Message、Agent、Listener、Subscriptionおよび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);