0

テーブルの 1 つに大きな varbinary フィールドがあり、アプリケーションでダウンロード進行状況インジケーターを表示するために部分的にダウンロードしたいと考えています。

SELECT クエリで送信されたデータを分割するにはどうすればよいですか?

ありがとう

4

3 に答える 3

1

SqlDataReader.GetBytesおよび CommandBehavior SequentialAccessを参照してください。

複数の呼び出しで varbinary(max) から読み取ることができます。その後、通話間の進行状況を表示できます。

ODBC についてはISequentialStreamを参照してください(こちらも参照)。チャンクで読み取ることもできます。

于 2009-01-27T12:10:42.157 に答える
1

これは、SQLGetData ODBC 呼び出しだけで実行できます。指定したバッファー サイズが varbinary の合計サイズよりも小さい場合、バッファーがいっぱいになり、SQL_SUCCESS_WITH_INFO と SQLSTATE 01004 が返されます。もう一度呼び出すと、データの次のセグメントが返されます。すべてのデータが取得されるまで繰り返すだけです。進行状況をパーセンテージで知るために、長さを別の列として選択できる場合があります。

長いデータを取得するための多くのヒントについては、こちらを参照してください。

于 2009-02-19T18:03:16.697 に答える
0

C++ アプリケーションで Qt4 で ODBC を使用しています。これを実現するには、SELECT ステートメントでデータを分割する必要があると思います。

とにかくありがとう。

于 2009-01-27T12:16:26.017 に答える