共用方式為


CDaoException 類別

表示以資料存取物件 (DAO) 為基礎之 MFC 資料庫類別所引發的例外狀況。

注意

透過 Office 2013 支援資料存取物件 (DAO)。 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 資料庫類別與以開放式資料庫連接性 (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 來源 原本產生錯誤的物件或應用程式名稱
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 類別
階層架構圖表