当我必须查询相关表时,我总是使用rawQuery()
。但是,有没有一个更好的方法没有原始查询既不是ContentProviders?
如果你已经将所有字段定义为常量(不是硬编码)并且你必须手动连接所有字段,那么编写原始查询是非常痛苦的。犯错很容易。
谢谢!
在这里你有一些简化的代码示例,正如你所看到的那样,始终连接常量并不“礼貌”......
String sql = "SELECT "+T_PARTICIPATION+".* , "+STUDENT_SURNAME+"+\", \"+"+NAME+" AS "+NAME+" "+
"FROM "+T_PARTICIPATION+", "+T_STUDENT+" "+
"WHERE "+T_PARTICIPATION+"."+CONNECTION_PROFILE_ID+"=1 AND "+SEANCE_ID+" IN (1, 2)";
return mDatabase.rawQuery(sql, null);
修改:虽然没有提供更多答案,但我接受@JoeMalin提供的答案
答案 0 :(得分:1)
我认为这是一个不需要作为内容提供者公开的SQLite数据库,因此将其保留为SQLite是正确的方法。
为什么不使用SQLiteDatabase.query()?它允许选择字符串和数组 选择参数。或者,您可能需要的是SQLiteQueryBuilder。在不了解您的应用程序或查看当前代码的情况下,很难说。