2016-08-30 10 views
0

これは具体的なフレームワークがわかりませんが、Androidだと思います。Android/Java/SQLiteで結合クエリを作成するより堅牢な方法はありますか?

通常は、テーブルの上に、基本的なクエリを実行するためにカーソルとContentValuesを使用していますが、テーブルのようなもので、あなたが私の知る限り生のクエリを使用する必要が参加することができます。

しかし、私は、私はあなたがバグや文字のエスケープの問題に実行することができますので、悪い習慣と考えられていると信じて、古い文字列連結のアプローチで行かなければならないよりも、私は生のクエリを作っています。

結合クエリを実行するためのより堅牢な方法はありますか?

+0

"しかし、私は古い文字列連結アプローチを使用しなければなりません。 "結合クエリを実行するためのより堅牢な方法はありますか?" - 結合なしのクエリと同じように、位置パラメータ( '? 'プレースホルダ)を使用します。 1つ以上のJOIN句を持つSQL SELECT文では使用できないと思われる理由は何ですか?あなたが加入せずにクエリを行う – CommonsWare

+0

@CommonsWare方法が異なっているとクエリが –

+0

に参加するよりも、私は、現時点では私の私のコードを持っていないが、それは 'カーソルC = db.query(tableNameの、 TableColumnの、 、 のようなものですwhereArgs、 GROUPBY有する 、 ORDERBY); '、その後、あなたは結果を反復処理し、あなたが好きなオブジェクトにコンテンツをマッピングするためにカーソルを使用することができます。これとは対照的に、私は結合が 'db.rawQuery()'を使ってのみ行うことができると信じています。 –

答えて

2

文字列の連結を使用する必要はありません。 rawQuery()もパラメータをサポートしています。 (パラメータは、フォーマットすることなくデータベースに直接渡されます)。

cursor = db.rawQuery("SELECT * FROM a JOIN b USING (id) WHERE name = ?", 
        new String[]{ name }); 
関連する問題