2012-12-28 47 views
0

我的問題與android的sqlite語法有關。我有一個查詢,其中我想要獲取一些具有比給定關鍵值更大級別的關鍵值的數據。例如,給定的ID是134.2,並且將被提取的記錄類似於這些134.2.5或134.2.98。問題是我在語法上丟失了一些東西,因此我得不到任何結果。這是我的代碼。先謝謝你。sqlite中的字符串查詢,android

我希望這個幫助。 SELECT * FROM TASKS WHERE FATHER_ID = FID +「。」+「%」+「。」

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK }, KEY_FATHER + " LIKE " + "'"+ id+"'"+"'"+".'"+"'" +"%'"+"'"+".'", null, null, null, null); 

回答

0

嘗試

+ " LIKE " + "'" + id + ".%'" 
2

你正在構建的關鍵對比表達的方式更換

+ " LIKE " + "'"+ id+"'"+"'"+".'"+"'" +"%'"+"'"+".'" 

似乎過於複雜;也應該是一個查詢參數,所以你不必擔心引用這麼多:

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK }, KEY_FATHER + " LIKE ?", new String[] { id + ".%" }, null, null, null); 
+0

非常感謝你,但我還是什麼也得不到。 – user1347280

+0

也許你可以添加一個SELECT語句來檢索你想要從你的數據庫中獲得的東西,這樣我們就可以看到你想要在你的mDb查詢中結束了什麼。 – antlersoft

0

也許你想這樣的:

mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK },KEY_FATHER + " LIKE " + "'"+ id+".%'", null, null, null, null); 
+0

謝謝你,但我仍然沒有得到任何東西。唯一讓我得到正確結果的方法是「'」+ id +「%'」,因爲它包含了我不需要的記錄。例如134.2.3.4.i我只希望離我所在的地方更遠一級 – user1347280