SQLiteQueryBuilder.query()vs SQLiteDatabase.query()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLiteQueryBuilder.query()vs SQLiteDatabase.query()相关的知识,希望对你有一定的参考价值。

这两种方法有什么区别?对我来说,似乎SQLiteDatabase的唯一好处是它能够使用不同的数据库。我对吗?

答案

主要方法是SQLiteDatabase#rawQuery()SQLiteDatabase#query()SQLiteQueryBuilder都只是组成SQL的助手。

SQLiteDatabase#query()只能从一个表中组成简单的查询。 SQLiteQueryBuilder可以创建连接,联合等。由于SQLiteQueryBuilder是一个额外的对象,你只需要构建它,如果你需要它的力量。

就个人而言,我认为任何非平凡的SQL都比SQL更容易被读取,因此我会使用rawQuery而不是SQLiteQueryBuilder,但这是一个品味问题以及你对SQL的了解程度。如果您想要以不同方式组合在一起的一些常见子查询,那么SQLiteQueryBuilder也可能很有用。

事实上,我更喜欢使用预准备语句,因为与其执行相比,SQL的编译速度较慢,并且因为它避免了对可能不受信任的值执行字符串操作。我一开始找不到API,因为出于某种奇怪的原因,它被称为SQLiteDatabase#compileStatement而不是底层C API中常用的prepare

另一答案

如果要在多个表上进行连接,SQLiteQueryBuilder非常有用。如果您在GrepCode上查看源代码,它有几种方便的方法:SQLiteQueryBuilder

否则,我无法想到使用SQLiteQueryBuilder而不是其他查询数据库的方法。

以上是关于SQLiteQueryBuilder.query()vs SQLiteDatabase.query()的主要内容,如果未能解决你的问题,请参考以下文章