Ios 删除表sqlite问题

Ios 删除表sqlite问题,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我已经能够使用相同的代码结构删除和重新加载表,但是这个表遇到了一个问题。基本上,我的代码打算做的是允许用户删除他们的自定义选择并恢复默认值。任何关于我为什么不能放下桌子的见解都将不胜感激 编辑:问题是要删除的初始表不存在。我最终使用sqlite3_errmsg来解决这个问题 - (void) dropReloadFoodlistTable{ const char *dbpath = [_databasePath UTF8String]; sqlite3_stmt *statement;

我已经能够使用相同的代码结构删除和重新加载表,但是这个表遇到了一个问题。基本上,我的代码打算做的是允许用户删除他们的自定义选择并恢复默认值。任何关于我为什么不能放下桌子的见解都将不胜感激


编辑:问题是要删除的初始表不存在。我最终使用sqlite3_errmsg来解决这个问题

 - (void) dropReloadFoodlistTable{
const char *dbpath = [_databasePath UTF8String];
sqlite3_stmt    *statement;

if (sqlite3_open(dbpath, &_profileDB) == SQLITE_OK)
{
    NSString *querySQL = @"DROP TABLE FOODLIST";

    const char *query_stmt = [querySQL UTF8String];

    if (sqlite3_prepare_v2(_profileDB,
                           query_stmt, -1, &statement, NULL) == SQLITE_OK)
    {
        if (sqlite3_step(statement) == SQLITE_ROW)
        {
            NSLog(@"SQL Statement complete");
        }
        sqlite3_finalize(statement);
    }

    char *errMsg2;
    const char *sql_stmt2 =
    "CREATE TABLE IF NOT EXISTS FOODLIST (ID INTEGER PRIMARY KEY AUTOINCREMENT, CARB STRING, PROTEIN STRING, FAT STRING, FRUIT STRING, VEG STRING)";

    if (sqlite3_exec(_profileDB, sql_stmt2, NULL, NULL, &errMsg2) != SQLITE_OK)
    {
        NSLog( @"Failed to create FOODLIST table");
    }


    sqlite3_close(_profileDB);
}


[self initialDataLoadFoodList];

}

此代码不执行
DROP TABLE
语句


要执行准备好的语句,必须调用。

准备语句,但决不能使用
sqlite3\u step()
实际执行语句


()

代码在哪里失败?使用
sqlite3\u errmsg
查找错误。如果您实际执行了
DROP
语句,也会有所帮助。你所要做的就是准备一份声明,然后完成它。无法描述错误,无法使用sqlite3_errmsg。问题是要删除的初始表不存在。我最后用sqlite3_errmsg解决了这个问题。请重写您的编辑作为答案。回答你自己的问题没关系,但你应该在实际答案中回答,而不是作为对问题的编辑。我编辑了代码,但问题是它没有通过“准备实际运行步骤”
DROP
语句需要与
sqlite3_exec
一起运行,就像您的
CREATE
语句一样。问题是要删除的初始表不存在。我最终使用sqlite3_errmsg来解决这个问题。