2011-06-21 148 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);