这两种方法有什么不同?对我来说,SQLiteDatabase的唯一好处似乎是它能够处理不同的数据库。我说的对吗?
发布于 2013-06-21 15:57:35
主要的方法是SQLiteDatabase#rawQuery()。SQLiteDatabase#query()和SQLiteQueryBuilder都只是组成SQL的帮助器。
SQLiteDatabase#query()只能从一个表组成简单的查询。SQLiteQueryBuilder可以创建joins、unions等。因为SQLiteQueryBuilder是一个额外的对象,所以只有在需要它的功能时才会构造它。
就我个人而言,我认为任何重要的SQL都比像这样用helper编写的代码更容易读懂,所以我会使用rawQuery而不是SQLiteQueryBuilder,但这是一个品味和对SQL的了解程度的问题。如果您有一些通用子查询想要以不同的方式组合在一起,那么SQLiteQueryBuilder可能也很有用。
事实上,我更喜欢使用预准备语句,因为SQL的编译速度比它的执行速度慢,而且它避免了对可能不受信任的值进行字符串操作。我一开始找不到这个接口,因为出于某种奇怪的原因,它被称为SQLiteDatabase#compileStatement,而不是底层C API中使用的通常的prepare。
发布于 2014-10-09 23:36:24
如果您想在多个表上进行连接,则SQLiteQueryBuilder非常有用。如果您在GrepCode上查看源代码,它有几个方便的方法:SQLiteQueryBuilder
否则,我想不出一个可靠的理由来使用SQLiteQueryBuilder而不是其他方法来查询数据库。
https://stackoverflow.com/questions/17230049
复制相似问题