无法获取sqlite记录

时间:2011-06-21 13:33:54

标签: android sqlite fetch

我使用以下查询来获取具有特定的行。

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

2 个答案:

答案 0 :(得分: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注入)

答案 1 :(得分: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);