因此,我试图通过传递指定行的ID从数据库中删除行,并且在网上找到了一些代码,但我真的不知道它是如何工作的。它在SQLiteDatabase的db.delete方法中使用whereClause参数。有人知道背后的逻辑吗? getWhereClause到底做什么?

 //the delete method in my database class
 public void deleteRow(String compareColumn, String compareValue) {
    // ask the database manager to delete the row of given id
    try {
        String whereClause = getWhereClause(compareColumn, compareValue);
    db.delete(TABLE_NAME, whereClause, null);
        //db.delete(TABLE_NAME, TABLE_ROW_ID + "=" + rowID, null);
    } catch (Exception e) {
        Log.e("DB DELETE ERROR", e.toString());
        e.printStackTrace();
    }
}

  //the method that returns whereClause
private String getWhereClause(String compareColumn, String compareValue) {
    String whereClause = null;
    if (compareColumn == null || compareColumn == "") { }
    else if (compareValue == null || compareColumn == "") { }
    else { whereClause = compareColumn + "=\"" + compareValue + "\""; }
    return whereClause;

最佳答案

delete()使用传入的whereClause构造类似DELETE FROM <tablename> WHERE <whereClause>的SQL语句。如果传入的whereClausenull,则将省略WHERE <whereClause>并删除所有行。

您的getWhereClause()构造一个可以用作whereClause的表达式,将列与指定的字符串文字值(例如foo="bar")进行比较。如果一个为null或为空,则返回null whereClause,以便所有行都匹配。

07-24 14:59