2010-04-07 82 views
2

我正在爲RC Cars編寫Android應用程序。它使用SQLite數據庫,並保存汽車模型,汽車名稱和其他變量。如何按列過濾Android數據庫

這裏是我的代碼:

public Cursor fetchAllNotes() { 
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
    KEY_CARNAME, KEY_TRACKNAME, KEY_TRACKSIZE, KEY_TRACKTRACTION, KEY_TRACKSURFACE, KEY_BODYTYPE, 
    KEY_COMMENTS}, KEY_CARNAME + "=" + "'MTX-4'", null, null, null, null); 
} 

我怎麼能只顯示有車有一定的模式在carname列命名的記錄?到目前爲止,我只能使用'MTX-4'或其他字符串來篩選結果。我需要能夠用String carName之類的字符串變量替換它,所以我可以通過用戶定義的汽車名稱進行過濾。

回答

8

將「MTX-4」替換爲「?」作爲參數變量。然後用你的參數列表替換selectionArgs參數(在你的例子中爲null),例如新的字符串[] {「MTX-4」}或新的字符串[] {carName}

以下片段相當於你的。

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
    KEY_CARNAME, KEY_TRACKNAME, KEY_TRACKSIZE, KEY_TRACKTRACTION, KEY_TRACKSURFACE, KEY_BODYTYPE, KEY_COMMENTS}, KEY_CARNAME + "=" + "?", new String[]{"MTX-4"}, null, null, null); 
+3

呃,毆打它:p + 1,這正是我要寫的。其實,我只會補充一點評論。爲了使其成爲用戶定義的搜索字符串,只需添加「String carName」作爲數據庫查詢的參數,然後用'new String [] {'替換Jim的'new String [] {「MTX-4」}} carName}'。如果你已經傳遞了一個字符串數組,你不需要爲'new String []'部分打擾。 – 2010-04-07 10:25:41

+0

吉姆和史蒂夫,非常感謝您的及時答覆。這很好地訣竅!在這個過程中,你幫助我理解選擇和選擇的方法。再次感謝!如果你曾經在英國的Wilts,我會給你買一瓶啤酒! :) – 2010-04-07 10:42:56