2011-06-21 33 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,new 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);