使用SQLite删除所有数据删除语法?

Lei*_*eif 6 sqlite sql-delete

我已经创建了一个按钮来删除我的数组中的所有对象,这些对象显示在我的tableView中.然后它重新加载数据,tableview为空.但是如何从SQLite数据库中删除所有数据,而不仅仅是数组呢?现在重新启动时会出现数据.我试过这个:

按钮无效:

   - (void) deleteAllButton_Clicked:(id)sender {

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


    }
Run Code Online (Sandbox Code Playgroud)

Appdelegate无效:

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

 //Remove it from the array.
 [bookArray removeAllObjects];
}
Run Code Online (Sandbox Code Playgroud)

删除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);
}
Run Code Online (Sandbox Code Playgroud)

ang*_*son 20

那么,正常的SQL语法是:

DELETE FROM tablename
Run Code Online (Sandbox Code Playgroud)

  • 不,我不知道你的意思.将删除表中所有行的SQL是我在答案中写的.如果这不是问题,那么你应该澄清你真正在问什么.我担心我无法帮助你处理iOS问题(或NSAssert来自的任何问题.) (2认同)

Zig*_*rth 6

如果你有一个标准的主要id列(你应该),你可以做到

DELETE FROM tablename WHERE id > -1;
Run Code Online (Sandbox Code Playgroud)

这将删除表中的所有行,因为没有小于0的id.

  • 为什么不直接调用`DELETE FROM tablename`? (6认同)