【问题标题】:How to filter Android database by column如何按列过滤Android数据库
【发布时间】:2010-04-07 10:15:42
【问题描述】:

我正在为 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);
}

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

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    将“MTX-4”替换为“?”作为参数变量。然后用您的参数列表替换 selectionArgs 参数(在您的示例中为 null),例如新字符串[]{"MTX-4"} 或新字符串[]{carName}

    下面的sn-p等价于你的。

    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);
    

    【讨论】:

    • 啊,被打败了:p +1,这正是我要写的。实际上,我只想再添加一条评论。要使其成为用户定义的搜索字符串,只需添加“String carName”作为数据库查询的参数,然后将 Jim 的 new String[]{"MTX-4"} 替换为 new String[]{carName}。如果您已经在传递一个字符串数组,则无需费心new String[] 部分。
    • Jim 和 Steve,非常感谢您的及时回复。那做得很好!在这个过程中,你帮助我理解了 selection 和 selectionArgs。再次感谢!如果你在英国威尔茨,我会请你喝啤酒! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2013-05-02
    • 2017-04-29
    • 2020-09-21
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多