Windows Form App显示OBDC DB2连接的查询执行/检索时间



我需要进度条或状态消息来显示执行查询时间。现在我的应用程序只有冻结,我没有办法显示多少时间已经过去,查询执行在哪里(执行vs检索)

我没有发现太多关于这一点,我不知道它是否可能,因为它冻结,是否有一种方法来取消查询,以及?

谢谢!

要在执行长时间运行的查询时拥有一个未冻结的应用程序,您需要在单独的线程上执行它。尝试使用BackgroundWorker。你可以用ReportProgress。有两种情况:

1 -你有一个单一的查询,修改一些表的批处理,但它在DB服务器上运行很长时间。在这种情况下,如果可能的话,您可以(这里也有多种场景)将批处理日志写入某个表。您可以创建临时触发器和临时表查询目标表。当记录被处理时,触发器将更新临时表。在后台工作程序中编写一个SQL查询来查询临时表并查看记录了多少行。直到job标记为"DONE"(在同一个临时表中)

2 -在这种情况下,很容易跟踪进度,因为在这里,您一次执行代码中的一行所有SQL。所以你知道你有多少更新,并且可以精确地判断,例如"处理1000个中的5个"。在后台worker中,您将在DoWork中执行此工作,并且在每个DB调用中您将调用ReportProgress

如何实现BackgroundWorker你可以在网上找到1000个例子。对于情形2,差不多就是这样了。对于场景#1,这取决于您做什么。可能有10种不同的方法来实现它。但是主要的逻辑仍然存在——一个单独的线程正在跟踪某个设备(在本例中是表)的进程。

最新更新