How to remove all data from table using FMDB

2019-07-23 15:08发布

I want to delete all data from table in my database. I am using FMDB.And i have used this code but it will not delete data from my table.

-(BOOL) deleteAll
{

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

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

    [db close];

    return success;
    return YES;
}

标签: iphone ios fmdb
2条回答
在下西门庆
2楼-- · 2019-07-23 15:58

Although DELETE command will work it is slow because it selects each row and than proceeds to delete it.

If you are deleting the whole table it is better to DROP the table and than recreate it:

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

Swift (for completeness sakes):

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())")
}

reference: truncate SQLite

查看更多
beautiful°
3楼-- · 2019-07-23 16:06

Try to use this code.

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

As long as i know Sqlite does not support TRUNCATE query.

查看更多
登录 后发表回答