C# 如何使用Devart终止在c中运行sql查询?
我想创建自己的sql工具,但在终止运行的查询方面有点问题。此工具将执行各种sql查询:选择、插入、更新等 我正在使用Devart和c,winforms应用程序。这是我的密码:C# 如何使用Devart终止在c中运行sql查询?,c#,.net,winforms,oracle,devart,C#,.net,Winforms,Oracle,Devart,我想创建自己的sql工具,但在终止运行的查询方面有点问题。此工具将执行各种sql查询:选择、插入、更新等 我正在使用Devart和c,winforms应用程序。这是我的密码: try { dt = null; dt = new OracleDataTable(); dt.Connection = dp.sqlConnection; dt.SelectCommand =
try
{
dt = null;
dt = new OracleDataTable();
dt.Connection = dp.sqlConnection;
dt.SelectCommand = dp.sqlConnection.CreateCommand();
dt.SelectCommand.CommandText = tbQuery.Text;
IAsyncResult aRes = dt.BeginFill(null, null);
SetStatus("In progress...");
while (!aRes.IsCompleted)
{
}
if (!cancel)
{
dt.EndFill(aRes);
SetDgv(dt);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
此代码正在另一个线程中执行。因此,当我按下“取消”按钮时,我会:
cancel = true;
dt.CancelFetch();
它可以工作,但不是每个查询都可以。它适用于这样的查询:从temp_表中选择*,其中temp_表有1mln记录。。但是我不使用声明:
select column from-此查询具有非常复杂的where部分,它只返回50条记录,但来自具有超过1mln条记录的表。我无法阻止
您能告诉我如何停止每个sql语句吗?在调用BeginFill方法的地方终止线程是一种好方法吗?我会将代码放入一个线程中并终止线程,这对用户更友好,因为您的UI仍然负责,而且您可以比查询更轻松地终止线程,我相信。相关:,即alter system kill可能会有所帮助。我这样做。。我有负责任的用户界面。但我不想杀人,我想停止执行或读取。。。