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来解决这个问题。