2013-03-09 27 views
0

我已經拿起了這段代碼,我試圖理解和工作到我的應用程序它應該從父表中刪除一行和子表上的任何行其相關嫌我不完全理解它,日食在while循環中拋出一個錯誤,我理解的錯誤,但不完全是如何的人被得到它的工作安卓數據庫行刪除()與while循環

public boolean removeRow(int paramInt, String paramString) 
{ 
    int i = 1; 
    if (paramString.equals("nameTable")) 
    { 
    SQLiteDatabase localSQLiteDatabase1 = this.db; 
    String str1 = "name_ref_ID=" + paramInt; 
    int j = localSQLiteDatabase1.delete("itemTable", str1, null); 
    SQLiteDatabase localSQLiteDatabase2 = this.db; 
    String str2 = "names_id=" + paramInt; 
    if (localSQLiteDatabase2.delete(paramString, str2, null) <= 0); 
    } 
    while (true) 
    { 
    return i;// shows errror here as its not returning a bool 
    i = 0; 
    continue; 
    if (paramString.equals("itemTable")) 
    { 
     SQLiteDatabase localSQLiteDatabase3 = this.db; 
     String str3 = "item_id=" + paramInt; 
     if (localSQLiteDatabase3.delete(paramString, str3, null) > 0) 
     continue; 
     i = 0; 
     continue; 
    } 
    i = 0; 
    } 
} 

過我看來回報超出放置並且將保持循環的其餘部分不被執行。

+0

對不起,但我已經投票關閉這個,因爲它不是一個真正的問題。我意識到你不會理解代碼是如何工作的,但是,簡單地說,這沒什麼意義。使用'while(true)'而無法離開會導致無限循環,正如您已經指出的那樣,返回類型是錯誤的。 – Squonk 2013-03-09 23:47:25

回答

1

我不確定代碼會如何爲你從中得到它的人工作,因爲他正在返回我女巫是一個INT和他的功能狀態他應該返回一個布爾值(這就是爲什麼日食給你的錯誤) 。

此功能只要返回就停止運行。所以當while循環開始時,它會再次停止。另外請記住,一段時間(真)的循環並不是很好的做法。基本上你創建了一個無限循環,並投入一些技巧來再次打破它。

要刪除子表的所有行,建議使用兩個查詢。首先在子表上使用Inner query作爲您的where語句刪除查詢。然後再在你的父表上刪除。

+0

嗯非常好的主意,可以在delete()方便的方法中使用內部查詢,如果是的話,你可以拋出一個例子嗎? – JosephK 2013-03-09 23:55:41

+0

是的,你可以在這裏發佈一個例子[link](http://www.w3resource.com/sql/delete-statement/delete-with-subqueries.php) – 2013-03-10 00:00:11