在不使用rawQuery()的情况下在Android中查询相关表

时间:2012-02-23 17:22:14

标签: android database sqlite

当我必须查询相关表时,我总是使用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提供的答案

1 个答案:

答案 0 :(得分:1)

我认为这是一个不需要作为内容提供者公开的SQLite数据库,因此将其保留为SQLite是正确的方法。

为什么不使用SQLiteDatabase.query()?它允许选择字符串和数组 选择参数。或者,您可能需要的是SQLiteQueryBuilder。在不了解您的应用程序或查看当前代码的情况下,很难说。