Android:如何取消/中断/中断SQLite查询?

时间:2010-08-11 14:38:22

标签: android sqlite interrupt

在我的Android应用程序中,用户可以使用导入的数据填充数据库,然后执行预定义的复杂SQL查询。对于某些数据模式,查询将花费很长时间(HTC Hero上的分钟和更多时间),而常见用法不会超过10-15秒。

有没有办法在Android上取消挂起的SQLite查询?超时也一样好,不需要部分结果。我正在AsyncTask.doInBackground()

中执行查询

我知道最好的方法是优化查询或更改应用程序逻辑,但在这种情况下结果取决于用户的知识,所以我想帮助那些输入麻烦模式的人。

4 个答案:

答案 0 :(得分:2)

您无法取消待处理的SQL查询。它是在SQLite引擎中完成的。 SQLite具有中断查询的本机方法,但在java接口中无法访问。

最好的方法是提高查询性能 阅读:http://www.sqlite.org/cvstrac/wiki?p=PerformanceTuning

您可以通过限制行号将长时间运行的查询划分为更小的查询。然后取消以块为单位执行的查询会更容易。

答案 1 :(得分:0)

ASyncTask支持取消,标志应取消全部,包括SQL查询。

ASyncTask.cancel(boolean mayInterruptIfRunning)

答案 2 :(得分:0)

SQLite提供了一个intrerupt方法: http://www.sqlite.org/c3ref/interrupt.html

我不确定你会怎么称呼它在Android中。

答案 3 :(得分:0)

您可以使用android.os.CancellationSignal取消在 sqlite 上运行的查询,android.database.sqlite.SQLiteDatabase可以传递给df = pd.DataFrame([1,2,3,4],index=['A']*4) df Out[325]: 0 A 1 A 2 A 3 A 4

的某些方法