我们可以取消发给sql server的查询吗?

时间:2012-12-27 10:05:44

标签: c# sql-server sql-server-2008 c#-4.0 ado.net

我有一个复杂的SQL,它涉及大量的计算等。我想知道是否可以取消发给SQL服务器的查询?

实施例。有一个名为“搜索”的按钮,用户点击“搜索”。我想显示一个名为“取消”的按钮,它应该取消发给SQL服务器的查询。

这可能吗?

1 个答案:

答案 0 :(得分:8)

ADO.NET中有很多异步函数,例如: SqlCommand.BeginExecuteNonQuery

您可以在应用程序中调用这些函数,存储结果对象并在用户单击“取消”按钮时取消它。

因此,在伪代码中,您可以执行以下步骤:

  1. 用户点击搜索按钮。
  2. 在按钮的处理程序中,打开数据库连接等。
  3. 显示取消按钮。
  4. 调用您选择的ADO.NET异步函数。
  5. 存储函数调用的IAsyncResult返回对象(用于检测操作何时完成以再次隐藏取消按钮)。
  6. 在取消按钮的处理程序中,拨打SqlCommand的{​​{3}}。