如何使用 FMDB 从表中删除所有数据

Posted

技术标签:

【中文标题】如何使用 FMDB 从表中删除所有数据【英文标题】:How to remove all data from table using FMDB 【发布时间】:2013-04-04 11:11:43 【问题描述】:

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

-(BOOL) deleteAll


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

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

    [db close];

    return success;
    return YES;

【问题讨论】:

@DharaParekh 它没有显示任何错误只是数据没有被删除 【参考方案1】:

尝试使用此代码。

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

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

【讨论】:

【参考方案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

Swift(为了完整起见):

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

参考:truncate SQLite

【讨论】:

以上是关于如何使用 FMDB 从表中删除所有数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在Oracle中添加一个策略,用户可以从表中选择所有数据,并且只能插入、更新、删除有条件的数据

从表中删除所有记录 - doCMD.RunSQL

如何删除sqlite数据库表中的一行?

如何从表中删除除前两个和最后一个之外的所有行?

在Oracle中从表中删除重复行

如何从表中删除重复记录? [复制]