2017-01-29 12 views
0

id = xで1つのデータだけをクエリして取得しようとします。適切なrawQuery

methodは次のとおりです。

public Cursor getDataWithId(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from urun_table where ID = "+id,null); 
    return res; 
} 

私はこの間違っているのでしょうか?私は思うので、私はselectionArgsを正しく理解していませんでした。

ありがとうございます。

+0

実際のID値はテーブル番号または文字列にありますか? –

答えて

2

試してみてください:rawQuery() documentationのように

String TABLE_URUN = "urun_table"; 
String KEY_ID = "ID"; 

public Cursor getDataWithId(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String query = String.format("SELECT * FROM %s WHERE %s = ?", TABLE_URUN, KEY_ID); 
    Cursor res = db.rawQuery(query, new String[]{id}); 
    return res; 
} 

selectionArgs文字列:あなたが含まれるのか? where句のクエリでは、 は、selectionArgsの値に置き換えられます。値 は文字列としてバインドされます。

あなたのような何かのために複数の選択を使用したいのであれば、:

SELECT * FROM TABLE WHERE KEY_ID = id AND KEY_OTHER = otherValue 

あなただけの複数を追加する必要があります「?」 selectionArgsパラメータの文字列:

String KEY_OTHER = "other"; 

public Cursor getDataWithId(String id, String other) { 
    String query = String.format("SELECT * FROM %s WHERE %s = ? AND %s = ?", TABLE_URUN, KEY_ID, KEY_OTHER); 
    Cursor res = db.rawQuery(query, new String[]{id, other}); 
    return res; 
} 
+0

ありがとう、私は今理解していますseletionArgs –

+0

あなたを歓迎します;) –

-1

あなたはこのようなものを使用することができ、この

public Cursor getDataWithId(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from urun_table where ID = '" + id + "'", null); 
    return res; 
}