IRowsetFastLoad::InsertRow (OLE DB)
一括コピー行セットに行を追加します。 サンプルについては、「IRowsetFastLoad を使用したデータの一括コピー (OLE DB)」と「IROWSETFASTLOAD と ISEQUENTIALSTREAM を使用した SQL SERVER への BLOB データの送信 (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
SQLNCLI11 では、要求を完了するのに必要なメモリを割り当てることができませんでした。
E_UNEXPECTED
既に IRowsetFastLoad::Commit メソッドによって無効になっている一括コピー行セットに対して呼び出されました。
DB_E_BADACCESSORHANDLE
コンシューマーが指定した hAccessor 引数が無効でした。
DB_E_BADACCESSORTYPE
指定されたアクセサーが行アクセサーではなかったか、コンシューマー所有のメモリが指定されませんでした。
解説
コンシューマー データを列のSQL Serverデータ型に変換中にエラーが発生すると、SQL SERVER NATIVE CLIENT OLE DB プロバイダーからE_FAILが返されます。 InsertRow メソッドを使用するか、Commit メソッドのみを使用して、データを SQL Server に転送できます。 InsertRow メソッドを使用する場合、コンシューマー アプリケーションは、データ型変換エラーの通知を受け取るまで、誤ったデータを使用してこのメソッドを何回も呼び出す可能性があります。 Commit メソッドでは、すべてのデータがコンシューマーにより正しく指定されたことが保証されるので、コンシューマーは適切に Commit を使用することで、必要に応じてデータを検証できます。
OLE DB プロバイダーの一括コピー行セットSQL Server Native Clientは書き込み専用です。 SQL Server Native Client OLE DB プロバイダーは、行セットのコンシューマー クエリを許可するメソッドを公開しません。 処理を終了する場合、コンシューマーは Commit メソッドを呼び出さずに、IRowsetFastLoad インターフェイスの参照を解放できます。 コンシューマーが行セットに挿入した行にアクセスして値を変更する機能や、そのような行を行セットから個別に削除する機能はありません。
一括コピーされる行は、サーバー上で SQL Server 用に形式が設定されます。 行の形式は、ANSI_PADDING など、接続やセッションに設定されたオプションの影響を受けます。 このオプションは、SQL Server Native Client OLE DB プロバイダーを介して行われたすべての接続に対して、既定で オンに設定されます。