无法通过 delete() 从 SQLite 数据库中删除行 - Android

Unable to delete row from SQLite DB via delete() - Android

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

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

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

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

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

所有 3 个表都有 shoeId 列。

有人可以帮忙吗?

谢谢。

第二个参数是 where 子句,所以你的查询应该是这样的:

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

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

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

由于以下原因,上述查询无法正常工作:

  • 假设这里的columnName是busTicketId,它的数据类型是Int。
  • 创建数据库时,由于创建 table 查询中的错误,busTicketId 被错误地创建为默认字符串类型。
  • 结果到了删除busTicketId的时候,它试图搜索busTicketId,它是Int类型的,因为找不到,所以受影响的行数总是0。

在创建 table 时解决此列的数据类型问题后,此问题也得到解决。