Share via


CDaoException クラス

データ アクセス オブジェクト (DAO: Data Accsess Object) を基にした MFC データベース クラスから発生する例外条件を表します。 DAO 3.6 は最終バージョンであり、古いバージョンと見なされます。

構文

class CDaoException : public CException

メンバー

パブリック コンストラクター

名前 説明
CDaoException::CDaoException CDaoException オブジェクトを構築します。

パブリック メソッド

名前 説明
CDaoException::GetErrorCount データベース エンジンの Errors コレクション内のエラーの数を返します。
CDaoException::GetErrorInfo Errors コレクション内の特定のエラー オブジェクトに関するエラー情報を返します。

パブリック データ メンバー

名前 説明
CDaoException::m_nAfxDaoError MFC DAO クラス内のエラーに対する拡張エラー コードが含まれています。
CDaoException::m_pErrorInfo 1 つの DAO エラー オブジェクトに関する情報を含む CDaoErrorInfo オブジェクトへのポインター。
CDaoException::m_scode エラーに 関連付けられている SCODE 値。

解説

このクラスには、例外の原因を特定するために使用できるパブリック データ メンバーが含まれています。 CDaoException オブジェクトは DAO データベース クラスのメンバー関数によって構築およびスローされます。

Note

DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用しても、ODBC データ ソースにアクセスできます。 一般に、DAO に基づく MFC クラスは、ODBC に基づく MFC クラスよりも能力が高くなります。DAO ベースのクラスは、ODBC ドライバーを介して、独自のデータベース エンジンを介してデータにアクセスできます。 DAO ベースのクラスでは、DAO を直接呼び出さなくても、クラスを介したテーブルの追加などのデータ定義言語 (DDL) 操作もサポートされます。 ODBC クラスによってスローされる例外の詳細については、CDBException を参照してください

CATCH 式のスコープ内で例外オブジェクトにアクセスできます。 AfxThrowDaoException グローバル関数を使用して、独自のコードからオブジェクトをスローCDaoExceptionすることもできます。

MFC では、すべての DAO エラーは例外として表されます。種類 CDaoExceptionは ゚ です。 この型の例外をキャッチすると、メンバー関数を使用 CDaoException して、データベース エンジンの Errors コレクションに格納されている DAO エラー オブジェクトから情報を取得できます。 各エラーが発生すると、1 つ以上のエラー オブジェクトが Errors コレクションに配置されます。 (通常、コレクションに含まれるエラー オブジェクトは 1 つだけです。ODBC データ ソースを使用している場合は、複数のエラー オブジェクトを取得する可能性が高くなります)。別の DAO 操作でエラーが生成されると、Errors コレクションがクリアされ、新しいエラー オブジェクトが Errors コレクションに配置されます。 エラーを生成しない DAO 操作は、Errors コレクションには影響しません。

DAO エラー コードについては、DAOERR.H ファイルを参照してください。 関連情報については、DAO ヘルプのトピック「トラップ可能なデータ アクセス エラー」を参照してください。

例外処理全般の詳細、またはオブジェクトの詳細については、例外処理 (MFC)例外: データベース例外に関するCDaoException記事を参照してください。 2 番目の記事には、DAO での例外処理を示すコード例が含まれています。

継承階層

CObject

Cexception

CDaoException

必要条件

ヘッダー: afxdao.h

CDaoException::CDaoException

CDaoException オブジェクトを構築します。

CDaoException();

解説

通常、フレームワークは、コードが例外をスローするときに例外オブジェクトを作成します。 例外オブジェクトを明示的に構築する必要はほとんどありません。 独自のコードから a CDaoException をスローする場合は、グローバル関数 AfxThrowDaoException を呼び出します

ただし、MFC クラスがカプセル化する DAO インターフェイス ポインターを介して DAO を直接呼び出す場合は、例外オブジェクトを明示的に作成できます。 その場合は、DAO からエラー情報を取得することが必要になる場合があります。 DAODatabases インターフェイスを介して DAO メソッドをワークスペースの Databases コレクションに呼び出すと、DAO でエラーが発生したとします。

DAO エラー情報を取得するには
  1. CDaoException オブジェクトを構築します。

  2. 例外オブジェクトの GetErrorCount メンバー関数を呼び出して、データベース エンジンの Errors コレクションに含まれるエラー オブジェクトの数を確認します。 (ODBC データ ソースを使用している場合を除き、通常は 1 つだけです)。

  3. 例外オブジェクトの GetErrorInfo メンバー関数を呼び出して、例外オブジェクトを使用して、コレクション内のインデックスによって一度に 1 つの特定のエラー オブジェクトを取得します。 例外オブジェクトは、1 つの DAO エラー オブジェクトのプロキシと考えてください。

  4. m_pErrorInfo データ メンバーで返されるGetErrorInfo現在の CDaoErrorInfo 構造体を調べます。 そのメンバーは DAO エラーに関する情報を提供します。

  5. ODBC データ ソースの場合は、必要に応じて手順 3 と 4 を繰り返し、エラー オブジェクトを増やします。

  6. ヒープ上に例外オブジェクトを作成した場合は、完了時に演算子を使用して例外オブジェクトを delete 削除します。

MFC DAO クラスでのエラー処理の詳細については、「例外: データベース例外」を参照してください。

CDaoException::GetErrorCount

このメンバー関数を呼び出して、データベース エンジンの Errors コレクション内の DAO エラー オブジェクトの数を取得します。

short GetErrorCount();

戻り値

データベース エンジンの Errors コレクション内の DAO エラー オブジェクトの数。

解説

この情報は、Errors コレクションをループ処理して、コレクション内の 1 つ以上の DAO エラー オブジェクトをそれぞれ取得する場合に役立ちます。 インデックスまたは DAO エラー番号でエラー オブジェクトを取得するには、GetErrorInfo メンバー関数を呼び出します。

Note

通常、Errors コレクションにはエラー オブジェクトが 1 つだけ存在します。 ただし、ODBC データ ソースを使用している場合は、複数のデータ ソースが存在する可能性があります。

CDaoException::GetErrorInfo

Errors コレクション内の特定のエラー オブジェクトに関するエラー情報を返します。

void GetErrorInfo(int nIndex);

パラメーター

Nindex
データベース エンジンの Errors コレクション内のエラー情報のインデックス。インデックスによる参照用です。

解説

このメンバー関数を呼び出して、例外に関する次の種類の情報を取得します。

  • エラー コード

  • ソース

  • 説明

  • ヘルプ ファイル

  • ヘルプ コンテキスト

GetErrorInfo は、例外オブジェクトのデータ メンバーに情報を m_pErrorInfo 格納します。 返される情報の簡単な説明については、m_pErrorInfoを参照してください。 MFC によってスローされた型 CDaoException の例外をキャッチした場合、 m_pErrorInfo メンバーは既に入力されています。 DAO を直接呼び出す場合は、例外オブジェクトの GetErrorInfo メンバー関数を自分で呼び出して入力 m_pErrorInfoする必要があります。 詳細については、CDaoErrorInfo 構造体を参照してください。

DAO 例外とコード例については、例外: データベース例外に関する記事を参照してください。

CDaoException::m_nAfxDaoError

MFC 拡張エラー コードが含まれています。

解説

このコードは、MFC DAO クラスの特定のコンポーネントが誤った場合に提供されます。

次のいずれかの値になります。

  • NO_AFX_DAO_ERROR 最新の操作で MFC 拡張エラーが発生しませんでした。 ただし、この操作で DAO または OLE から他のエラーが発生する可能性があるため、m_pErrorInfoと場合によってはm_scodeチェックする必要があります。

  • MFC AFX_DAO_ERROR_ENGINE_INITIALIZATION Microsoft Jet データベース エンジンを初期化できませんでした。 OLE が初期化に失敗したか、DAO データベース エンジン オブジェクトのインスタンスを作成できなかった可能性があります。 これらの問題は、通常、DAO または OLE の不適切なインストールを示唆しています。

  • AFX_DAO_ERROR_DFX_BIND DAO レコード フィールド交換 (DFX) 関数呼び出しで使用されるアドレスが存在しないか、無効です (アドレスはデータのバインドに使用されませんでした)。 DFX 呼び出しで無効なアドレスを渡したか、DFX 操作間でアドレスが無効になっている可能性があります。

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN クエリ定義または開いている状態ではない tabledef オブジェクトに基づいてレコードセットを開こうとしました。

CDaoException::m_pErrorInfo

GetErrorInfo を呼び出して最後に取得した DAO エラー オブジェクトに関する情報を提供する構造体へのCDaoErrorInfoポインターを格納します

解説

このオブジェクトには、次の情報が含まれています。

CDaoErrorInfo メンバー 情報 意味
m_lErrorCode エラー コード DAO エラー コード
m_strSource ソース 最初にエラーを生成したオブジェクトまたはアプリケーションの名前
m_strDescription 説明 エラーに関連付けられた説明文字列
m_strHelpFile ヘルプ ファイル ユーザーが問題に関する情報を取得できる Windows ヘルプ ファイルへのパス
m_lHelpContext ヘルプ コンテキスト DAO ヘルプ ファイル内のトピックのコンテキスト ID

オブジェクトに含まれるCDaoErrorInfo情報の詳細については、CDaoErrorInfo 構造体を参照してください。

CDaoException::m_scode

エラーを説明する型 SCODE の値を格納します。

解説

これは OLE コードです。 ほとんどの場合、他 CDaoException のデータ メンバーではより具体的な MFC または DAO エラー情報を使用できるため、この値を使用する必要はほとんどありません。

SCODE の詳細については、Windows SDK の OLE エラー コードの構造に関するトピックを参照してください。 SCODE データ型は HRESULT データ型にマップされます。

関連項目

CException クラス
階層図
CException クラス