【问题标题】:Delete SQLite row with multiple WHERE arguments in Android在 Android 中删除具有多个 WHERE 参数的 SQLite 行
【发布时间】:2011-07-18 18:02:22
【问题描述】:

我想删除数据库中具有多个 WHERE 参数的记录。

我的数据库助手类有这个方法:

    public void deleteManualRow(String where){
    try {db.delete(TABLE_NAME_MANUAL, where, null);}
    catch (Exception e)
    {
        Log.e("DB ERROR", e.toString());
        e.printStackTrace();
    }
}

传递给此方法的“where”字符串在调试器中被视为这样:

eventName='Manual Event 6' AND eventStartTime='2011-07-18T05:40:00.000-0400' AND eventEndTime='2011-07-18T06:40:00.000-0400'

如果我想删除一条带有多个 WHERE 参数的记录,我应该如何构造这个 WHERE 子句?所有的数据类型都是字符串。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    喜欢这个db.delete(TABLE_NAME_MANUAL,"Column1='5' and column2 like '3'", null);

    【讨论】:

    • 感谢您的回复,但我的代码中的错误不是因为我的 SQL 语法。我试图删除一条实际上根本不存在的记录,因此没有结果……我犯了一个非常愚蠢的错误。为了讨论,我看到在您的回复中,您在 column2 中使用了“like”而不是“=”。为什么使用“like”而不是“=”? '=' 和 'like' 是否可以互换,因为我的代码在将 '=' 用于 column2 时有效。
    • 你知道的还有两个不同
    【解决方案2】:

    你必须学习你的 sqlite api,接下来我从 Android Flutter 示例中展示。

    来自 sqlite_api.dart:

    Future<int> delete(String table, {String where, List<dynamic> whereArgs});
    

    所以你的结果代码将是:

    await db.delete(tableName, where: 'place_id = ? and country_id = ?', whereArgs: [place_id, country_id]);
    

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2013-12-12
      • 2016-11-09
      • 2023-03-16
      • 2014-11-02
      相关资源
      最近更新 更多