2011-06-21 14 views
0

次のクエリを使用して、特定の行をフェッチしています。sqliteレコードを取得できません

Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, "actionData", "mid" }, "mid" + "=" + mid, null, null, null, null, null); 

私は同じことをしようとすると例外が発生します。sqlite何か案は?

例外はある -

Error: android.database.sqlite.SQLiteException: no such column: qVEl3: , while compiling: SELECT DISTINCT _id, actionData, mid FROM notifs WHERE mid=qVEl3 
+0

すべてのそれらの列がそこに確かにあります。これは、戻り値mDb.query(DATABASE_TABLE、新しいString [] {KEY_ROWID、 "actionData"、 "mid"}、null、null、null、null、null)を使用してすべての列を取得しようとすると問題なく動作します。 – Suchi

答えて

2

あなたは引用を逃した:

SELECT DISTINCT _id, actionData, mid FROM notifs WHERE mid='qVEl3' 

だからあなたのAndroidのコードは次のようになります。

Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] 
    { KEY_ROWID, "actionData", "mid" }, 
    "mid=?", new String[] {mid}, null, null, null, null); 

を(それも、SQLインジェクションを防ぐことができます)
0

あなたは引用符での問題を回避するために、クエリパラメータを使用したいと思う:

Cursor mCursor = mDb.query(
    true, 
    DATABASE_TABLE, 
    new String[] { KEY_ROWID, "actionData", "mid" }, 
    "mid = ?",    // the ? is a placeholder. 
    new String[] { mid }, // sqlite will put the value of mid into the placeholder above. 
    null, 
    null, 
    null, 
    null); 
関連する問題