Android SQLite使用db.query()为JOIN而不是rawquery()

前端之家收集整理的这篇文章主要介绍了Android SQLite使用db.query()为JOIN而不是rawquery()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有tableA,tableB和tableC
表A和表B通过tableA.Id(PK)= tableB.tableAId(FK)连接,
表B和tableC通过tableB.Id(PK)= tableC.tableBId(FK)连接在一起

我想要这样做:

SELECT c.ALL from tableC c
INNER JOIN tableB b on c.tableBId = b.Id
INNER JOIN tableA a on b.tableAId = a.Id
WHERE a.Id = 108

我发现很多网站上的帖子使用db.rawquery()来实现这个查询.不过我也听说rawquery()比query()不那么安全.所以为了寻求最佳实践作为一个初学者,我的问题是:

有没有办法使用db.query()而不是db.rawquery()来实现此查询

提前致谢.

解决方法

Is there a way to implement this query using db.query() instead of
db.rawquery()?

所以值得一提的是,rawQuery()是一个技巧.但也存在另一种方法.

query()方法用于在一个表上执行查询.但是,在sqlite中如何使用JOIN表的最佳方法是使用SQLiteQueryBuilder和setTables()方法,您可以加入.

因此,我建议您使用提及的sqliteQueryBuilder.但是,对于rawQuery()方法,您只需要分配raw语句就更复杂了.

如果不知道如何开始,请检查这个例子:

> How to use a join with SQLite

注意:

rawQuery()比query()的安全性更低,因为query()方法使用比“raw”语句更安全的预编译语句.但是,始终可以(应该)使用占位符,这显着增加了语句的安全性,作为sql注入的主要保护,语句也变得更加人性化.

猜你在找的Android相关文章