2011-01-21 67 views
4

我做了一個按鈕,刪除我的數組中顯示在我的tableView中的所有對象。然後它重新加載數據並且tableview是空的。但是,我怎樣才能從SQLite數據庫中刪除所有數據,而不僅僅是數組?現在數據在我重新啓動時發生。我曾經嘗試這樣做:使用SQLite刪除語法刪除所有數據?

按鈕無效:

- (void) deleteAllButton_Clicked:(id)sender { 

    [appDelegate removeAllBooks:nil]; 
    [self.tableView reloadData]; 


    } 

的appdelegate無效:

-(void) removeAllBooks:(Book *)bookObj { 
//Delete it from the database. 
[bookObj deleteAllBooks]; 

//Remove it from the array. 
[bookArray removeAllObjects]; 
} 

在Book.m刪除語法

- (void) deleteAllBooks { 
if(deleteStmt == nil) { 
    const char *sql = "WHAT DO I HAVE TO DO TO DELETE ALL THE ROWS?"; 
    if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK) 
    NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database)); 
} 

//When binding parameters, index starts from 1 and not zero. 
sqlite3_bind_int(deleteStmt, 1, bookID); 

if (SQLITE_DONE != sqlite3_step(deleteStmt)) 
    NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database)); 

sqlite3_reset(deleteStmt); 
} 

回答

19

好了,正常的SQL語法將:

DELETE FROM tablename 
+0

我發現解決問題是什麼。當我將NSLog插入到刪除語法中時,我沒有得到任何響應。這意味着appDelegate void不會向book.m發送消息來執行刪除操作...嗯.. 如何從我的RootViewcontroller中訪問我的按鈕操作的deleteAllBooks方法? – Leif 2011-01-21 18:55:10

+0

hvis duskjøntehva jeg mente ... – Leif 2011-01-21 18:56:43

2

DELETE FROM tablename沒有爲我工作。我在iPhone上使用了一個sqlite3數據庫,我認爲這張海報也是。對我來說,得到這個工作,我需要:

DROP table tablename 

後跟一個CREATE聲明,如果我想仍然存在(沒有任何行)的表。

當然,這需要知道正確的CREATE聲明。使用Firefox的SQLManager插件可以快速爲我設計正確的CREATE語句。我從來沒有想過爲什麼DELETE FROM tablename沒有工作,但它絕對沒有,在我的情況。

6

如果你有一個標準的主ID列(你應該),你可以做

DELETE FROM tablename WHERE id > -1; 

,這將刪除表中的所有行,因爲沒有ID小於0