2012-02-23 13 views
2

関連するテーブルをクエリする必要があるときは、常にrawQuery()を使用します。しかし、ContentProvidersもRawクエリもないより良いアプローチがありますか? すべてのフィールドを定数(ハードコードされていない)として定義し、それらをすべて手作業で連結しなければならない場合は、生のクエリを書くのは非常に面倒です。間違いをするのはとても簡単です。 ありがとう!これ以上の答えが提供されていないものの:ここrawQuery()を使用せずにAndroidでクエリに関連するテーブル

あなたが見ることができるようにあなたは、いくつかの単純化されたコード例を持っているが、

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); 

編集...定数のすべての時間をCONCATする「丁寧」ではありません@JoeMalinが提供するものを受け入れる

答えて

1

これはコンテンツプロバイダーとして公開する必要のないSQLiteデータベースであると仮定して、SQLiteとして保存するのが適切な方法です。

なぜSQLiteDatabase.query()を使用しないのですか?これは、選択文字列と 選択引数の配列を許可します。または、あなたが必要とするものはSQLiteQueryBuilderです。あなたのアプリについてもっと知り、現在のコードを見ていなければ、言うことは難しいです。

+0

こんにちは!はい、これはコンテンツプロバイダとして公開する必要はありません。私はあなたが複数のテーブル(FROMの複数のテーブル)を照会することを許可していないので、query()は使用しません。私は質問を編集し、いくつかのコードを含んでいます。あなたの応答から、私はこのメソッドがより適切であると思います: 'public static String buildQueryString(boolean distinct、String tables、String [] columns、String where、String groupBy、String having、String orderBy、String limit) ' – Caumons

+0

'buildQueryString()'を使うより良い方法があるかどうか知っていますか? – Caumons

関連する問題