2010-04-07 78 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