ErrorRecord オブジェクト (OLE DB Provider for DB2)
ErrorRecord オブジェクトは、ErrorObject オブジェクトで IErrorRecord インターフェイスを呼び出すことによって作成されます。 エラーが発生すると、任意の SNA OLE DB オブジェクト上の任意のインターフェイスに ErrorObject が作成されます。 ErrorRecord オブジェクトは、エラーが発生したときに追加情報を取得するために使用されます。
ErrorRecord オブジェクトの次のインターフェイスは、現在のバージョンのMicrosoft OLE DB Provider for DB2でサポートされています。
IErrorInfo
OLE DB インターフェイス メソッドは、2 つの方法でエラー情報を返します。 インターフェイス メソッドによって返されるエラー コード ( リターン コードと呼ばれます) は、メソッドの全体的な成功または失敗を示します。 エラー レコードは、エラーのテキストの説明、エラーを定義したインターフェイスのグローバル一意識別子 (GUID)、プロバイダー固有のエラー情報など、エラーに関する詳細情報を提供します。 OLE DB のエラー オブジェクトは、オートメーションのエラー オブジェクトの拡張機能です。 同じメカニズムの多くを使用し、オートメーション エラー オブジェクトとして使用できます。
OLE DB エラーの戻りコードは HRESULT 型です。 リターン コードには、成功コードと警告コードとエラー コードの 2 つの一般的なクラスがあります。
成功コードと警告コードは、S_またはDB_S_で始まり、メソッドが正常に完了したことを示します。 標準の OLE DB エラー コードは OLEDBERR で定義されています。H インクルード ファイル。
戻りコードがS_OKまたはS_FALSE以外の場合は、メソッドを回復できるエラーが発生した可能性があります。 たとえば、 IRowset::GetNextRows は、行セットの末尾に達したために要求された行数を返すことができない場合に、DB_S_ENDOFROWSETを返します。 1 つの警告条件が発生した場合、メソッドはその条件のコードを返します。 複数の警告条件が発生した場合、メソッドは警告リターン コードの階層を記述し、複数の警告リターン コードを選択した場合に返される警告コードを示します。
エラー コードは、E_またはDB_E_で始まり、メソッドが完全に失敗し、有用な作業を実行できなかったことを示します。 たとえば、 GetNextRows は、OLE DB プロバイダーが行ハンドル (prghRows) の配列へのポインターを返す null ポインターの場合、E_INVALIDARGを返します。 例外は、これらのエラーに関する追加情報を返すためにメモリを割り当てるDB_E_ERRORSOCCURRED返すメソッドの一部です。 コンシューマーはこのメモリを解放する必要があります。 この場合にメモリを割り当てるメソッドについては、DB_E_ERRORSOCCURREDを返すメソッドを参照してください。
エラー コードは、メモリ不足などの実行時エラーを示す可能性がありますが、通常はプログラミング エラーを示します。 複数のエラーが発生した場合、返されるコードはプロバイダー固有です。 エラーと警告の両方が発生した場合、メソッドは失敗し、エラー コードを返します。
すべてのメソッドは、S_OK、E_FAIL、およびE_OUTOFMEMORYを返すことができます。 E_OUTOFMEMORY コードは、コンシューマーに返されるメモリを割り当てるメソッドにのみ適用されます。 場合によっては、 GetNextRows からの行数の減少など、返される値を少なく要求するメソッドを呼び出すことで、E_OUTOFMEMORY コードが排除される場合があります。