表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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)