这两种方法有什么区别? 对我来说,似乎 SQLiteDatabase 的唯一好处是它能够使用不同的数据库。我说的对吗?
最佳答案
主要方法是SQLiteDatabase#rawQuery()
。 SQLiteDatabase#query()
和 SQLiteQueryBuilder
都只是编写 SQL 的助手。
SQLiteDatabase#query()
只能从一张表中组合简单的查询。 SQLiteQueryBuilder
可以创建连接、联合等。由于 SQLiteQueryBuilder
是一个额外的对象,因此只有在需要它的强大功能时才构建它。
我个人认为,任何非平凡的 SQL 都比 SQL 更容易阅读,而不是像这样由帮助器组成的 fragment ,所以我会使用 rawQuery
而不是 SQLiteQueryBuilder
,但这是一个品味问题以及您对 SQL 的了解程度。如果您有一些想要以不同方式组合在一起的常见子查询,SQLiteQueryBuilder
也可能很有用。
事实上,我更喜欢使用准备好的语句,因为与执行相比,SQL 的编译速度很慢,并且因为它避免了对可能不受信任的值进行字符串操作。起初我找不到 API,因为某些奇怪的原因它被称为 SQLiteDatabase#compileStatement
而不是通常的 prepare
在底层 C API 中使用。
关于android - SQLiteQueryBuilder.query() 与 SQLiteDatabase.query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17230049/