CDaoException クラス
データ アクセス オブジェクト (DAO: Data Accsess Object) を基にした MFC データベース クラスから発生する例外条件を表します。
Note
データ アクセス オブジェクト (DAO) は、Office 2013 でサポートされています。 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 ヘルプのトピック「トラップ可能なデータ アクセス エラー」を参照してください。
一般的な例外処理の詳細、または CDaoException
オブジェクトの詳細については、「Exception Handling (MFC) 」および「 Exceptions: Database Exceptions」を参照してください。 2 番目の記事には、DAO での例外処理を示すコード例が含まれています。
継承階層
CDaoException
要件
ヘッダー: afxdao.h
CDaoException::CDaoException
CDaoException
オブジェクトを構築します。
CDaoException();
解説
通常、フレームワークは、コードが例外をスローするときに例外オブジェクトを作成します。 例外オブジェクトを明示的に構築する必要はほとんどありません。 独自のコードから CDaoException
をスローする場合は、グローバル関数 AfxThrowDaoExceptionを呼び出します。
ただし、MFC クラスがカプセル化する DAO インターフェイス ポインターを介して DAO を直接呼び出す場合は、例外オブジェクトを明示的に作成できます。 その場合は、DAO からエラー情報を取得することが必要になる場合があります。 DAODatabases インターフェイスを介して DAO メソッドをワークスペースの Databases コレクションに呼び出すと、DAO でエラーが発生したとします。
DAO エラー情報を取得するには
CDaoException
オブジェクトを構築します。例外オブジェクトの GetErrorCount メンバー関数を呼び出して、データベース エンジンの Errors コレクションに含まれるエラー オブジェクトの数を確認します。 (ODBC データ ソースを使用している場合を除き、通常は 1 つだけです)。
例外オブジェクトの GetErrorInfo メンバー関数を呼び出して、例外オブジェクトを使用して、コレクション内のインデックスによって一度に 1 つの特定のエラー オブジェクトを取得します。 例外オブジェクトは、1 つの DAO エラー オブジェクトのプロキシと考えてください。
m_pErrorInfo データ メンバーで返
GetErrorInfo
現在の CDaoErrorInfo 構造体を調べます。 そのメンバーは DAO エラーに関する情報を提供します。ODBC データ ソースの場合は、必要に応じて手順 3 と 4 を繰り返し、エラー オブジェクトを増やします。
ヒープ上に例外オブジェクトを作成した場合は、完了時に
delete
演算子を使用して例外オブジェクトを削除します。
MFC DAO クラスでのエラー処理の詳細については、「exceptions: データベース例外記事を参照してください。
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 データ型にマップされます。