如何从SQLite android中的表中删除某些键具有相同前缀的行?

时间:2016-10-14 07:13:17

标签: android sqlite

的简单表格

CREATE TABLE IF NOT EXISTS tb (id TEXT NOT NULL, json TEXT NOT NULL,PRIMARY KEY(id))

在表格中插入4行,如下所示: akey1, avalue1 akey2, avalue2 bkey1, bvalue1 bkey2, bvalue2

在android中,我用like执行删除:

final SQLiteDatabase database = this.getWritableDatabase();

boolean result = false;
database.beginTransaction();  
try{
    database.delete(tableName," id like ? ", new String[]{"akey%"})
    database.setTransactionSuccessful(); 
    result = true;
}catch(Exception e){
    result = false;
}finally{
    database.endTransaction(); 
}

我发现,这两行:akey1akey2都没有删除。

如果我使用sqlitebrowser运行DELETE FROM tb where id like 'akey%',则可以。

那有什么不对?

1 个答案:

答案 0 :(得分:-1)

问题一定是你错过了关于like语句的单个qoutation,如果你在你喜欢的条件下添加单个qoutations,它可能会有效。像这样:

database.delete(tableName," id like '?';", new String[]{"akey%"});

但无论如何“?”占位符有时候会有点小问题。

你最好自己构造语句,并像下面的args一样发送null:

 String likeCondition = "akey%";
database.delete(tableName," id like '"+ likeCondition + "';", null);