2
當我必須查詢相關表時,我總是使用rawQuery()
。但是,如果沒有原始查詢,ContentProviders都沒有更好的方法嗎? 如果您已將所有字段定義爲常量(而非硬編碼)並且您必須手動連接所有字段,那麼編寫原始查詢會非常痛苦。犯錯很容易。 謝謝!在不使用rawQuery的情況下查詢Android中的相關表()
這裏有一些簡單的代碼示例,你可以看到,它不是「禮貌」到Concat的常量所有的時間...
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提供的一個
嗨!是的,這並不需要作爲內容提供商公開。我不使用query(),因爲它不允許你查詢多個表(這是FROM中的多個表)。我編輯了這個問題幷包含了一些代碼。從你的迴應中,我認爲SQLiteQueryBuilder中的這個方法更合適:'public static String buildQueryString(boolean distinct,String tables,String [] columns,String where,String groupBy,String having,String orderBy,String limit) ' – Caumons 2012-02-25 20:02:16
你知道是否有比使用'buildQueryString()'更好的方法嗎? – Caumons 2012-03-09 00:13:26