如何按列过滤Android数据库

Joe*_*973 2 sqlite android

我正在为RC Cars编写Android应用程序.它使用SQLite数据库,并保存汽车的模型,汽车名称和其他变量.

这是我的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

如何仅显示carname列中指定的特定型号汽车的记录?到目前为止,我只能通过使用'MTX-4'或其他一些文字字符串来过滤结果.我需要能够用字符串变量替换它String carName或类似的东西,所以我可以通过用户定义的carname进行过滤.

Jim*_*ler 8

将"MTX-4"替换为"?" 作为参数变量.然后将selectionArgs参数(在您的示例中为null)替换为您的参数列表,例如new String [] {"MTX-4"}或new String [] {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);
Run Code Online (Sandbox Code Playgroud)

  • 哎呀,打败它:p +1,这正是我要写的.实际上,我再添加一条评论.要使其成为用户定义的搜索字符串,只需添加"String carName"作为数据库查询的参数,然后将Jim的`new String [] {"MTX-4"}`替换为`new String [] { carName}`.如果你已经传递了一个字符串数组,那么你不需要打扰`new String []`部分. (3认同)