助けてくれませんか?たとえば、MS SQLServer2008でBLOBにデータを挿入して取得する方法を探しています。OLEDBとVisualC++を使用しています。ありがとう
1 に答える
そのトピック(とにかく書き込み側)に関する詳細情報は、ここにあります:IROWSETFASTLOADおよびISEQENTIALSTREAMを使用したSQLSERVERへのBLOBデータの送信。
利用可能なサンプルのほとんどは単純すぎて、行ごとのデータ長の変化やISequentialStreamの使用を示していません。このサンプルでは、1つのソースファイルに両方の手法が含まれています。デフォルトでは、サンプルはIRowsetFastLoadを使用して、インラインバインディングを使用して行ごとに可変長のBLOBデータを送信する方法を示しています。この場合、インラインBLOBデータは使用可能なメモリに収まる必要があります。この方法では、追加のストリームオーバーヘッドがないため、BLOBデータが数バイトから数MBの場合にパフォーマンスが向上します。より大きなデータの場合、特にデータが必ずしもブロック内で一度にすべて利用できるとは限らない場合は、ストリーミングの方が適しています。
リードバックについては、MSDNの背景とサンプルコードがここにあります。
SQLServerネイティブクライアントOLEDBプロバイダーは、コンシューマーから要求されるまで、SQLServerから大きなデータを取得しません。コンシューマーは、すべての短いデータを1つのアクセサーにバインドしてから、1つ以上の一時的なアクセサーを使用して、必要に応じて大きなデータ値を取得する必要があります。