我想从像Sql Server Management Studio这样的长查询中获取数据。我的意思是,它从服务器收到后会立即显示少量数据(在本例中为SQL Server 2008)。
我正在使用C#和NET 3.5。我已阅读有关BeginExecuteReader的文档:此方法异步启动查询,但读取操作是同步完成的。
不幸的是,我在搜索谷歌时没有找到任何真实的例子:-(你能帮我解决这个话题吗?
我的查询很简单:SELECT [...] FROM [...] WHERE [...]
但是涉及很多行,我想向用户展示与查询匹配的第一行,而不是等待整个操作完成。
非常感谢!
答案 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数据库转移到应用程序后立即获取块。
希望它有所帮助。