【发布时间】:2009-01-27 12:00:20
【问题描述】:
我的一张表中有一个大的 varbinary 字段,我想分批下载以在我的应用程序中显示下载进度指示器。
如何拆分 SELECT 查询中发送的数据?
谢谢
【问题讨论】:
标签: c++ sql sql-server tsql odbc
我的一张表中有一个大的 varbinary 字段,我想分批下载以在我的应用程序中显示下载进度指示器。
如何拆分 SELECT 查询中发送的数据?
谢谢
【问题讨论】:
标签: c++ sql sql-server tsql odbc
您只需调用 SQLGetData ODBC 就可以做到这一点。如果您提供的缓冲区大小小于总 varbinary 大小,它将填充缓冲区并返回 SQL_SUCCESS_WITH_INFO 和 SQLSTATE 01004。如果再次调用它,它将返回下一段数据。您只需重复直到检索到所有数据。要以百分比的形式了解您的进度,您可以选择长度作为另一列。
请参阅此处以获取有关getting long data 的大量提示。
【讨论】:
请参阅SqlDataReader.GetBytes 和 CommandBehavior SequentialAccess。
它将允许您通过多次调用从 varbinary(max) 中读取。然后您可以显示通话之间的进度。
对于 ODBC,请参阅ISequentialStream (here as well),您也可以分块阅读。
【讨论】:
我在 C++ 应用程序中使用 ODBC 和 Qt4。我想我需要在 SELECT 语句中拆分数据来实现这一点。
还是谢谢。
【讨论】: