テーブルの 1 つに大きな varbinary フィールドがあり、アプリケーションでダウンロード進行状況インジケーターを表示するために部分的にダウンロードしたいと考えています。
SELECT クエリで送信されたデータを分割するにはどうすればよいですか?
ありがとう
テーブルの 1 つに大きな varbinary フィールドがあり、アプリケーションでダウンロード進行状況インジケーターを表示するために部分的にダウンロードしたいと考えています。
SELECT クエリで送信されたデータを分割するにはどうすればよいですか?
ありがとう
SqlDataReader.GetBytesおよび CommandBehavior SequentialAccessを参照してください。
複数の呼び出しで varbinary(max) から読み取ることができます。その後、通話間の進行状況を表示できます。
ODBC についてはISequentialStreamを参照してください(こちらも参照)。チャンクで読み取ることもできます。
これは、SQLGetData ODBC 呼び出しだけで実行できます。指定したバッファー サイズが varbinary の合計サイズよりも小さい場合、バッファーがいっぱいになり、SQL_SUCCESS_WITH_INFO と SQLSTATE 01004 が返されます。もう一度呼び出すと、データの次のセグメントが返されます。すべてのデータが取得されるまで繰り返すだけです。進行状況をパーセンテージで知るために、長さを別の列として選択できる場合があります。
長いデータを取得するための多くのヒントについては、こちらを参照してください。
C++ アプリケーションで Qt4 で ODBC を使用しています。これを実現するには、SELECT ステートメントでデータを分割する必要があると思います。
とにかくありがとう。