我的一张表中有一个大的 varbinary 字段,我想分批下载以在我的应用程序中显示下载进度指示器。
如何拆分 SELECT 查询中发送的数据?
谢谢
我的一张表中有一个大的 varbinary 字段,我想分批下载以在我的应用程序中显示下载进度指示器。
如何拆分 SELECT 查询中发送的数据?
谢谢
请参阅SqlDataReader.GetBytes和 CommandBehavior SequentialAccess。
它将允许您通过多个调用从 varbinary(max) 中读取。然后您可以显示通话之间的进度。
对于 ODBC,请参阅ISequentialStream(也可以在这里),您也可以分块阅读它。
您可以只使用 SQLGetData ODBC 调用来执行此操作。如果您提供的缓冲区大小小于总 varbinary 大小,它将填充缓冲区并返回 SQL_SUCCESS_WITH_INFO 和 SQLSTATE 01004。如果再次调用它,它将返回下一段数据。您只需重复直到检索到所有数据。要以百分比的形式了解您的进度,您可以选择长度作为另一列。
有关获取长数据的许多技巧,请参见此处。
我在 C++ 应用程序中使用 ODBC 和 Qt4。我想我需要在 SELECT 语句中拆分数据来实现这一点。
不管怎么说,还是要谢谢你。