2016-07-26 197 views
0

我有一个sqlite数据库3表。 TABLE1,TABLE2和TABLE3。无法通过删除()删除SQLite数据库中的行 - Android

我使用下面的API来删除数据库行(S):

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

现在,当我运行这个API Table 1和Table,该行被删除罚款,我得到了正确的号码在行中有影响。但是当我将这个API用于TABLE3时,我总是将rowsAffected设置为0,并且没有条目被删除。

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

所有3个表都有shoeId列。

有人可以帮忙吗?

感谢。

+0

你有没有检查你是否得到了鞋号并且通过了包含该表的 –

+0

你有没有给出任何外键? –

+0

删除方法应该看起来不像'int delete(String table,String whereClause,String [] whereArgs)'?但你似乎把你的表的名字放入约束中。所以这应该导致像“'DELETE FROM”+ tableName +“WHERE TABLE3”这样的查询 – AxelH

回答

0

由于以下原因,上述查询不起作用:

  • 可以说这里的columnName是busTicketId,它的数据类型是Int。
  • 创建数据库时,由于创建表查询中的错误,busTicketId被错误地创建为默认字符串类型。
  • 当时间来到删除busTicketId,有人试图寻找busTicketId,这是int类型的,并因为它找不到任何结果,受影响的行数始终竟然是0。

一旦在创建表格时修正了此列的数据类型问题,此问题也得到解决。

0

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

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

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

不要取下=?,它用于预处理语句

+0

对不起,这只是一个错字。实际的代码确实有=?在columnName旁边。 – Sunny