共用方式為


CDaoException 類別

表示以資料存取物件 (DAO) 為基礎之 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 CDaoErrorInfo 物件的指標 ,其中包含一個 DAO 錯誤物件的相關資訊。
CDaoException::m_scode 錯誤相關聯的 SCODE 值。

備註

類別包含可用來判斷例外狀況原因的公用資料成員。 CDaoException 物件是由 DAO 資料庫類別的成員函式所建構和擲回。

注意

DAO 資料庫類別與以 Open Database 連線ivity (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 資料來源。 一般而言,以 DAO 為基礎的 MFC 類別比以 ODBC 為基礎的 MFC 類別更有能力;DAO 型類別可以透過自己的資料庫引擎存取資料,包括透過 ODBC 驅動程式。 DAO 型類別也支援資料定義語言 (DDL) 作業,例如透過類別新增資料表,而不需要直接呼叫 DAO。 如需 ODBC 類別擲回之例外狀況的資訊,請參閱 CDBException

您可以在 CATCH 運算式的範圍內 存取例外狀況物件。 您也可以使用 AfxThrowDaoException 全域函式,從自己的程式碼擲回 CDaoException 物件。

在 MFC 中,所有 DAO 錯誤都會以 類型的 CDaoException 例外狀況表示。 當您攔截此類型的例外狀況時,您可以使用 CDaoException 成員函式,從儲存在資料庫引擎 Errors 集合中的任何 DAO 錯誤物件擷取資訊。 發生每個錯誤時,會將一或多個錯誤物件放在 Errors 集合中。 (通常集合只包含一個錯誤物件;如果您使用 ODBC 資料來源,則更有可能取得多個錯誤物件。當另一個 DAO 作業產生錯誤時,就會清除 Errors 集合,並將新的錯誤物件放在 Errors 集合中。 不會產生錯誤的 DAO 作業不會影響 Errors 集合。

如需 DAO 錯誤碼,請參閱 DAOERR.H 檔案。 如需相關資訊,請參閱 DAO 說明中的「可截獲的資料存取錯誤」主題。

如需一般例外狀況處理或物件的詳細資訊 CDaoException ,請參閱例外狀況處理(MFC) 例外狀況:資料庫例外狀況 一文 。 第二篇文章包含範例程式碼,說明 DAO 中的例外狀況處理。

繼承階層架構

CObject

CException

CDaoException

需求

標頭: afxdao.h

CDaoException::CDaoException

建構 CDaoException 物件。

CDaoException();

備註

一般而言,架構會在其程式碼擲回例外狀況時建立例外狀況物件。 您很少需要明確建構例外狀況物件。 如果您想要從自己的程式碼擲回 CDaoException ,請呼叫全域函式 AfxThrowDaoException

不過,如果您要透過 MFC 類別所封裝的 DAO 介面指標直接呼叫 DAO,您可能想要明確地建立例外狀況物件。 在此情況下,您可能需要從 DAO 擷取錯誤資訊。 假設當您透過 DAODatabases 介面呼叫 DAO 方法至工作區的 Databases 集合時,DAO 中發生錯誤。

擷取 DAO 錯誤資訊
  1. CDaoException建構 物件。

  2. 呼叫例外狀況物件的 GetErrorCount 成員函式,以判斷資料庫引擎 Errors 集合中的錯誤物件數目。 (通常只有一個,除非您使用 ODBC 資料來源。)

  3. 呼叫例外狀況物件的 GetErrorInfo 成員函式,透過例外狀況物件,依索引在集合中擷取一個特定的錯誤物件。 請將例外狀況物件視為一個 DAO 錯誤物件的 Proxy。

  4. 檢查m_pErrorInfo資料成員中傳回的 目前 CDaoErrorInfo 結構 GetErrorInfo 。 其成員提供 DAO 錯誤的相關資訊。

  5. 如果是 ODBC 資料來源,請視需要重複步驟 3 和 4,以取得更多錯誤物件。

  6. 如果您在堆積上建構了例外狀況物件,請在完成時使用 delete 運算子將其刪除。

如需在 MFC DAO 類別中處理錯誤的詳細資訊,請參閱例外狀況:資料庫例外狀況 一文

CDaoException::GetErrorCount

呼叫這個成員函式,以擷取資料庫引擎 Errors 集合中的 DAO 錯誤物件數目。

short GetErrorCount();

傳回值

資料庫引擎 Errors 集合中的 DAO 錯誤物件數目。

備註

這項資訊適用于迴圈處理 Errors 集合,以擷取集合中每個 DAO 錯誤物件。 若要依索引或 DAO 錯誤號碼擷取錯誤物件,請呼叫 GetErrorInfo 成員函式。

注意

通常 Errors 集合中只有一個錯誤物件。 不過,如果您使用 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

  • AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC 無法初始化 Microsoft Jet 資料庫引擎。 OLE 可能無法初始化,或可能不可能建立 DAO 資料庫引擎物件的實例。 這些問題通常建議 DAO 或 OLE 安裝不正確。

  • AFX_DAO_ERROR_DFX_BIND DAO 記錄欄位交換 (DFX) 函式呼叫中使用的位址不存在或無效(位址未用來系結資料)。 您可能已在 DFX 呼叫中傳遞錯誤的位址,或 DFX 作業之間的位址可能無效。

  • AFX_DAO_ERROR_OBJECT_NOT_OPEN您嘗試根據 querydef 或未處於開啟狀態的 tabledef 物件開啟記錄集。

CDaoException::m_pErrorInfo

包含 結構的指標 CDaoErrorInfo ,提供您上次呼叫 GetErrorInfo 擷取之 DAO 錯誤物件的相關資訊。

備註

此物件包含下列資訊:

CDaoErrorInfo 成員 資訊 意義
m_lErrorCode 錯誤碼 DAO 錯誤碼
m_strSource Source 原本產生錯誤的物件或應用程式名稱
m_strDescription 描述 與錯誤相關聯的描述性字串
m_strHelpFile 說明檔 Windows 說明檔的路徑,使用者可以在其中取得問題的相關資訊
m_lHelpContext 說明內容 DAO 說明檔中主題的內容識別碼

如需 物件中 CDaoErrorInfo 所含資訊的完整詳細資料,請參閱 CDaoErrorInfo 結構。

CDaoException::m_scode

包含類型的 SCODE 值,描述錯誤。

備註

這是 OLE 程式碼。 您很少需要使用此值,因為幾乎所有情況下,其他 CDaoException 資料成員中都有更具體的 MFC 或 DAO 錯誤資訊。

如需 SCODE 的相關資訊,請參閱 Windows SDK 中 OLE 錯誤碼 的結構主題 。 SCODE 資料類型會對應至 HRESULT 資料類型。

另請參閱

CException 類別
階層架構圖表
CException 類別