ErrorRecord 对象 (OLE DB Provider for DB2)

ErrorRecord 对象是通过对 ErrorObject 对象调用 IErrorRecord 接口创建的。 发生错误时,在任何 SNA OLE DB 对象上的任何接口上创建 ErrorObjectErrorRecord 对象用于在发生错误时检索其他信息。

当前版本的 DB2 的 Microsoft OLE DB 提供程序 支持 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 访问接口返回指向行句柄数组的指针 (prghRows) 时,GetNextRows 返回E_INVALIDARG。 这种情况的一个例外是,某些返回的方法DB_E_ERRORSOCCURRED分配内存以返回有关这些错误的其他信息。 使用者必须释放此内存。 有关在这种情况下分配内存的方法的信息,请参阅返回DB_E_ERRORSOCCURRED的方法。

    尽管错误代码可以指示运行时错误(例如内存不足),但它们通常表示编程错误。 如果发生多个错误,则返回的代码是特定于提供程序的代码。 如果同时发生错误和警告,该方法将失败并返回错误代码。

    所有方法都可以返回S_OK、E_FAIL和E_OUTOFMEMORY。 E_OUTOFMEMORY代码仅适用于分配返回给使用者的内存的方法。 在某些情况下,可以通过调用 方法来请求更少的返回值(例如 GetNextRows 中的更少的行)来消除E_OUTOFMEMORY代码。