如何强制终止QSqlQuery 的exec 发出的耗时查询

时间:2021-04-30 10:49:35

如果一个表有很多数据,查询时间很长,用户希望随时终止已经通过QSqlQuery发起的查询。


请给出成功的方法。  能给出思路就可以,一定是成功实现的哦。

5 个解决方案

#1


查询目前是在单独的线程里执行的。

线程可终止,窗体也可以关闭,但已经执行的查询,实际上没有终止。

#2


QSqlQuery.exec()的时候,Sql 语句是数据库在执行,Qt 只是等待返回结果,所以没法打断 Sql 语句的执行。

#3


那为什么有的软件可以终止查询呢? 

#4


引用 2 楼 Inhibitory 的回复:
QSqlQuery.exec()的时候,Sql 语句是数据库在执行,Qt 只是等待返回结果,所以没法打断 Sql 语句的执行。


那为什么有的软件却可以终止查询呢?
是如何做到的呢? 

#5


看了一下pgAdmin的源码,它取消查询的功能是借助驱动程序中的一个api实现的。

而 QsqlQuery 没有实现 取消的功能。

#1


查询目前是在单独的线程里执行的。

线程可终止,窗体也可以关闭,但已经执行的查询,实际上没有终止。

#2


QSqlQuery.exec()的时候,Sql 语句是数据库在执行,Qt 只是等待返回结果,所以没法打断 Sql 语句的执行。

#3


那为什么有的软件可以终止查询呢? 

#4


引用 2 楼 Inhibitory 的回复:
QSqlQuery.exec()的时候,Sql 语句是数据库在执行,Qt 只是等待返回结果,所以没法打断 Sql 语句的执行。


那为什么有的软件却可以终止查询呢?
是如何做到的呢? 

#5


看了一下pgAdmin的源码,它取消查询的功能是借助驱动程序中的一个api实现的。

而 QsqlQuery 没有实现 取消的功能。