无法通过delete() - Android从SQLite DB中删除行

时间:2016-07-26 10:10:09

标签: android sqlite android-sqlite sql-delete

我有一个包含3个表的sqlite数据库。表1,表2和表3。

我正在使用以下API从数据库中删除行:

int rowsAffected = db.delete(tableName, "columnName=?", new String[] {String.valueOf(shoeId)});

现在,当我为TABLE1和TABLE2运行此API时,行被删除很好,我在rowsAffected中得到正确的数字。但是当我将这个API用于TABLE3时,我总是将rowsAffected设为0并且不删除任何条目。

int rowsAffected = db.delete(tableName, "columnName=?", new String[] {String.valueOf(shoeId)});

所有3个表都有shoeId列。

有人可以帮忙吗?

感谢。

2 个答案:

答案 0 :(得分:0)

第二个参数是where子句,因此查询应如下所示:

int rowsAffected = db.delete(tableName, "nameOfColumn=?", new String[] {String.valueOf(shoeId)}); 

这意味着:"DELETE FROM tableName WHERE nameOfColumn = String.valueOf(shoeId)"

不要删除=?,它用于预备语句

答案 1 :(得分:0)

由于以下原因,上述查询无效:

  • 让我们说这里的columnName是busTicketId,它的数据类型是Int。
  • 创建数据库时,由于Create表查询中的错误,busTicketId被错误地创建为默认的String类型。
  • 因此,当删除busTicketId的时候,它正在尝试搜索具有Int类型的busTicketId,因为它找不到任何内容,受影响的行数总是变为0。

在创建表时修复了此列的数据类型问题,此问题也得到了修复。