简体   繁体   中英

How to remove all data from table using FMDB

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;
}

Try to use this code.

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM