whereClause如何在public int中工作删除(String table,String whereClause,String [] whereArgs);

时间:2014-04-03 12:00:01

标签: java android database sqlite sql-delete

所以我试图通过传递指定行的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;

4 个答案:

答案 0 :(得分:1)

它只检查参数是非null /非空,并返回WHERE条件的语句,如下所示:message = "Superman"。因此,结果查询将如下:DELETE FROM myTable WHERE message = "Superman"

顺便说一句,因为它是字符串文字,所以最好使用单引号而不是双引号,如whereClause = compareColumn + "='" + compareValue + "'"

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

简单解释一下,它需要两个参数

1.Column name

2.Column value

并创建一个String文字并将其返回。比如说' student_id = 100 ',其中列名为student_id,column_value为100。当两个参数中的任何一个为null时,它将返回null

答案 3 :(得分:0)

方法deleteRow()获取列(类似“名称”)和值(类似“Lukas”):

public void deleteRow(String compareColumn, String compareValue) 

String变量whereClause使用getWhereClause(column, value) - 方法在SQL where子句(WHERE name LIKE "Lukas")中形成两个String变量。

现在,对象.delete()的{​​{1}}方法将变量db作为参数并执行删除查询。