我使用以下查询来获取具有特定中的行。
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 :(得分: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);