在Android平臺(2.2)上使用參數進行數據庫查詢時遇到問題。我已創建的表是這樣的:Android:SQLite查詢不綁定整數參數?
db.execSQL("CREATE VIRTUAL TABLE " + Msg._TABLE_NAME + " USING FTS3 ("
+ Msg._ID + " INTEGER, "
(...)
+ Msg.READ + " SHORT DEFAULT 0,"
+ Msg.URGENT + " SHORT DEFAULT 0"
+ ");");
然後我試圖查詢該使用參數化查詢:
String[] columns = new String[] {Msg.ROWID, Msg.TITLE, Msg.READ, Msg.URGENT};
(...)
getContentResolver().query(Msg.CONTENT_URI, columns,
Msg.URGENT + "=? AND " + Msg.READ + "=?" + , whereArgs, null);
其中whereArgs
對於每個查詢變化:
String[] urgentUnread = new String[]{"1", "0"};
String[] regularUnread = new String[]{"0", "0"};
,但不管是什麼即使存在數據,它也會返回0個結果/行。使用QueryBuilder的內容提供商不改變PARAMS和無返回值以及調用查詢時,「直接」:
Cursor c = db.query(tables, columns, where, whereArgs, groupBy, having, orderBy, limit);
查詢工作,如果我這樣做只是使用concat:
getContentResolver().query(Msg.CONTENT_URI, columns,
Msg.READ + "=0 AND " + Msg.URGENT + "=1", null, null);
但這似乎殺死了param查詢的目的,並且很難緩存。 Dalvik抱怨(在做了大量的查詢之後)高速緩存中沒有用於查詢的空間,具有諷刺意味的是,它告訴我用'?'使用參數化查詢。我很樂意,相信我:)
我知道JavaDoc指出參數綁定爲StringS,但我只是簡直不敢相信...因爲那將是主要的...嗯,... WTF
我在哪裏出錯了?
在此先感謝。
不僅可以,它實際上是鼓勵 - 如果沒有人提出解決方案,並且您找到一個,分享的榮譽。 – 2011-11-10 23:27:43