我已經能夠使用相同的代碼結構刪除和重新加載表,但遇到此表的問題。基本上我的代碼打算做的是讓用戶刪除他們的自定義選擇並恢復默認值。對於爲什麼我無法放下桌子的任何見解表示讚賞。刪除表sqlite問題
編輯:問題是,要刪除的初始表不存在。我最終使用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];
}
代碼失敗在哪裏?使用'sqlite3_errmsg'來找出錯誤。 – rmaddy
如果你真的執行了'DROP'語句,它也會有所幫助。你所做的就是準備一份聲明,然後確定它。 – rmaddy
-1。無法描述錯誤,未能使用sqlite3_errmsg。 –