1

我想从我的数据库中的表中删除所有数据。我正在使用 FMDB。我已经使用了此代码,但它不会从我的表中删除数据。

-(BOOL) deleteAll
{

    FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
    [db open];

    BOOL success =  [db executeUpdate:@"TRUNCATE TABLE customers"];

    [db close];

    return success;
    return YES;
}
4

2 回答 2

8

尝试使用此代码。

BOOL success =  [db executeUpdate:@"DELETE FROM customers"];

只要我知道 Sqlite 不支持TRUNCATE查询。

于 2013-04-04T11:13:45.960 回答
2

尽管DELETE命令会起作用,但它很慢,因为它会选择每一行然后继续删除它。

如果您要删除整个表,最好使用DROP该表而不是重新创建它:

BOOL result =  [db executeUpdate:@"DROP TABLE IF EXISTS `customers`;"];
BOOL resultTwo = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS customers(name text primary key, age int)"]; //or course fields in your table will be different

斯威夫特(为了完整起见):

let dropTable = "DROP TABLE customers"
let result = contactDB.executeUpdate(dropTable, withArgumentsInArray: nil)
if !result {
     print("Error: \(contactDB.lastErrorMessage())")
} 
let createTable = "CREATE TABLE IF NOT EXISTS customers(name text primary key, age int)"
if !contactDB.executeStatements(createTable) {
     print("Error: \(contactDB.lastErrorMessage())")
}

参考:截断 SQLite

于 2016-08-20T09:19:14.277 回答