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

Android SQLite使用db.query()为JOIN而不是rawquery(),第1张

概述我有tableA,tableB和tableC 表A和表B通过tableA.Id(PK)= tableB.tableAId(FK)连接, 表B和tableC通过tableB.Id(PK)= tableC.tableBId(FK)连接在一起 我想要这样做: SELECT c.ALL from tableC cINNER JOIN tableB b on c.tableBId = b.IdINNER 我有tableA,tableB和tableC
表A和表B通过tableA.ID(PK)= tableB.tableAID(FK)连接,
表B和tableC通过tableB.ID(PK)= tableC.tableBID(FK)连接在一起

我想要这样做:

SELECT c.ALL from tableC cINNER JOIN tableB b on c.tableBID = b.IDINNER JOIN tableA a on b.tableAID = a.IDWHERE 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 SQLite使用db.query()为JOIN而不是rawquery()全部内容,希望文章能够帮你解决Android SQLite使用db.query()为JOIN而不是rawquery()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存