IRowsetFastLoad::InsertRow (OLE DB)
一括コピー行セットに行を追加します。
構文
HRESULT InsertRow(
HACCESSOR hAccessor,
void* pData);
引数
- hAccessor[in]
一括コピーの行データを定義するアクセサのハンドルを指定します。参照されるアクセサは行アクセサで、データ値を保持するコンシューマ所有のメモリをバインドします。
- pData[in]
データ値を保持するコンシューマ所有のメモリへのポインタを指定します。詳細については、「DBBINDING 構造体」を参照してください。
リターン コード値
- S_OK
メソッドが成功しました。すべての列のバインド状態値は、DBSTATUS_S_OK または DBSTATUS_S_NULL です。
- E_FAIL
エラーが発生しました。エラー情報は、行セットのエラー インターフェイスから参照できます。
- E_INVALIDARG
pData 引数に NULL ポインタが設定されました。
- E_OUTOFMEMORY
SQLNCLI では、要求を完了するのに必要なメモリを割り当てることができませんでした。
- E_UNEXPECTED
既に IRowsetFastLoad::Commit メソッドによって無効になっている一括コピー行セットに対して呼び出されました。
- DB_E_BADACCESSORHANDLE
コンシューマが指定した hAccessor 引数が無効でした。
- DB_E_BADACCESSORTYPE
指定されたアクセサが行アクセサではなかったか、コンシューマ所有のメモリが指定されませんでした。
解説
コンシューマ データを列の SQL Server データ型に変換するときにエラーが発生すると、SQL Native Client OLE DB プロバイダから E_FAIL が返されます。InsertRow メソッドを使用するか、Commit メソッドのみを使用して、データを SQL Server に転送できます。InsertRow メソッドを使用する場合、コンシューマ アプリケーションは、データ型変換エラーの通知を受け取るまで、誤ったデータを使用してこのメソッドを何回も呼び出す可能性があります。Commit メソッドでは、すべてのデータがコンシューマにより正しく指定されたことが保証されるので、コンシューマは適切に Commit を使用することで、必要に応じてデータを検証できます。
SQL Native Client OLE DB プロバイダの一括コピー行セットは書き込み専用です。SQL Native Client OLE DB プロバイダでは、コンシューマから行セットを照会できるメソッドは公開していません。処理を終了する場合、コンシューマは Commit メソッドを呼び出さずに、IRowsetFastLoad インターフェイスの参照を解放できます。コンシューマが行セットに挿入した行にアクセスして値を変更する機能や、そのような行を行セットから個別に削除する機能はありません。
一括コピーされる行は、サーバー上で SQL Server 用に形式が設定されます。行の形式は、ANSI_PADDING など、接続やセッションに設定されたオプションの影響を受けます。このようなオプションは、SQL Native Client OLE DB プロバイダにより確立された接続に対して既定で有効になります。