ErrorRecord 物件 (OLE DB Provider for DB2)
ErrorRecord物件是藉由呼叫ErrorObject物件的IErrorRecord介面來建立。 當發生錯誤時,任何 SNA OLE DB 物件的任何介面上都會建立 ErrorObject 。 ErrorRecord物件可用來擷取錯誤發生時的其他資訊。
目前版本的 Microsoft OLE DB Provider for DB2 支援ErrorRecord物件的下列介面:
IErrorInfo
OLE DB 介面方法會以兩種方式傳回錯誤資訊。 介面方法所傳回的錯誤碼,稱為傳 回碼,表示方法的整體成功或失敗。 錯誤記錄會提供錯誤的詳細資訊,例如錯誤的文字描述、定義錯誤之介面的全域唯一識別碼 (GUID) ,以及提供者特定的錯誤資訊。 OLE DB 中的錯誤物件是自動化中錯誤物件的延伸。 它們使用許多相同的機制,而且可以當做自動化錯誤物件使用。
OLE DB 錯誤傳回碼的類型為 HRESULT。 傳回碼有兩個一般類別:成功和警告碼,以及錯誤碼。
成功和警告碼的開頭為S_或DB_S_,並指出方法已成功完成。 標準 OLE DB 錯誤碼定義于 OLEDBERR 中。H 包含檔案。
如果傳回碼不是S_OK或S_FALSE,則可能會發生方法能夠復原的錯誤。 例如, IRowset::GetNextRows 會在因為到達資料列集結尾而無法傳回要求的資料列數目時,傳回DB_S_ENDOFROWSET。 如果發生單一警告條件,方法會傳回該條件的程式碼。 如果發生多個警告狀況,方法會描述警告傳回碼的階層,指出在指定多個警告傳回碼之間的選擇時,應該傳回哪些警告碼。
錯誤碼的開頭為 E_ 或 DB_E_,並指出方法完全失敗,而且無法執行任何有用的工作。 例如,當 OLE DB 提供者傳回資料列控制碼陣列的 null 指標 (prghRows) 時,GetNextRows會傳回E_INVALIDARG。 例外狀況是傳回DB_E_ERRORSOCCURRED部分方法會配置記憶體,以傳回這些錯誤的其他資訊。 取用者必須釋放此記憶體。 如需在此情況下配置記憶體的方法相關資訊,請參閱傳回DB_E_ERRORSOCCURRED的方法。
雖然錯誤碼可以指出執行階段錯誤,例如記憶體不足,但它們通常表示程式設計錯誤。 如果發生多個錯誤,則傳回的程式碼是提供者特定的。 如果同時發生錯誤和警告,方法會失敗並傳回錯誤碼。
所有方法都可以傳回S_OK、E_FAIL和E_OUTOFMEMORY。 E_OUTOFMEMORY程式碼僅適用于配置傳回給取用者之記憶體的方法。 在某些情況下,呼叫要求較少傳回值的方法,例如 GetNextRows中的資料列較少,可能會消除E_OUTOFMEMORY程式碼。