如何使用C#以小步骤从Sql Server长查询中检索数据

时间:2011-04-27 18:55:19

标签: c# sql-server database

我想从像Sql Server Management Studio这样的长查询中获取数据。我的意思是,它从服务器收到后会立即显示少量数据(在本例中为SQL Server 2008)。

我正在使用C#和NET 3.5。我已阅读有关BeginExecuteReader的文档:此方法异步启动查询,但读取操作是同步完成的。

不幸的是,我在搜索谷歌时没有找到任何真实的例子:-(你能帮我解决这个话题吗?

我的查询很简单:SELECT [...] FROM [...] WHERE [...]

但是涉及很多行,我想向用户展示与查询匹配的第一行,而不是等待整个操作完成。

非常感谢!

2 个答案:

答案 0 :(得分:2)

您无需为要完成的任务异步执行阅读器。以下是一些选项:

选项1:在using a SqlDataReader读取(或批量)时显示记录。根据您的应用程序,您可能需要在单独的线程上执行读取器并通知UI线程相应地更新视图(例如,使用BackgroundWorker)。

using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        //read record, diplay record
    }
}

选项2(最佳选项):Page your query results并且一次只显示数据的“屏幕”。

答案 1 :(得分:1)

您可以尝试对结果集进行分页,并在从sql server数据库转移到应用程序后立即获取块。

  1. 统计结果集。
  2. 使用计数编号,通过结果集分页,页面大小为1000(或更多)(在Sql Server上使用ROW_NUMBER)
  3. 显示第一个结果集(分页),然后在返回后立即附加其余结果。
  4. 希望它有所帮助。