gpt4 book ai didi

iphone - 遍历 SQLite_master 表并删除表

转载 作者:行者123 更新时间:2023-11-29 13:39:49 24 4
gpt4 key购买 nike

下面的代码部分有效。它应该返回 sqlite_master 表中的所有表,然后删除它们。

 NSString *sql = [NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table';"];

sqlite3_stmt *statement = [database prepare:sql];
if(statement != nil)
{
while(sqlite3_step(statement) == SQLITE_ROW)
{
NSString* currentTable = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
if ([currentTable rangeOfString:@"sqlite"].location == NSNotFound &&
[currentTable rangeOfString:@"Setting"].location == NSNotFound)
{
NSLog(@"current table: %@", currentTable);
[database deleteTable: currentTable];
}
}
sqlite3_finalize(statement);
}

但是,在调用 [database deleteTable: currentTable]; 之后,表并没有被删除。

delete table 只是一个 sqlite3_exec 接受 sql: [NSString stringWithFormat:@"DROP TABLE IF EXISTS '%@'", tableName]

这是为什么?是因为当我在循环中时数据库正在使用中吗?我会更好地将结果放在一个数组中而不是以这种方式循环和删除表吗?没有异常被抛出/崩溃等,exec 正在执行。

最佳答案

尝试在每次删除后使用 sqlite3_finalize 完成。

希望对你有帮助。

关于iphone - 遍历 SQLite_master 表并删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com