0

我的一张表中有一个大的 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++ 应用程序中使用 ODBC 和 Qt4。我想我需要在 SELECT 语句中拆分数据来实现这一点。

不管怎么说,还是要谢谢你。

于 2009-01-27T12:16:26.017 回答