android - SQLiteQueryBuilder.query() 与 SQLiteDatabase.query()

标签 android sqlite

这两种方法有什么区别? 对我来说,似乎 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/

相关文章:

android - 如何检查 SQLite 表中的重复行值?

java - 插入不保存

python - 使用 Hybrid_property 对从其他列的值派生的时间列进行排序

java - Android - Java - MediaStore - 如何使用多个条件的选择

android - 如何在按下后退按钮时不结束应用程序

android - ImageView 太小

android - 如何在 Android 下的 SQLite 中正确插入日期时间值?

android - FileNotFound - 尝试获取 Assets 文件时

Android 应用内促销 : The code you entered is invalid

sql - 列数更改时将数据插入SQLite表的动态方法