2016-07-26 233 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