如果该列不可用,我正在尝试在SQLite数据库中插入两个新列。一切都很好,“添加的”布尔值为“是”。但是这些列不在我的桌子上!

-(void)checkColumnExists
{
    NSString *dbPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"movieData.sqlite"];
    const char *dbpath = [dbPath UTF8String];
    sqlite3 *contactDB;

    sqlite3_open(dbpath, &contactDB);

    sqlite3_stmt *selectStmt;

    const char *sqlStatement = "SELECT borrowMovie from myMovies";
    if(sqlite3_prepare_v2(contactDB, sqlStatement, -1, &selectStmt, NULL) != SQLITE_OK){
        //ALTER TABLE {tableName} ADD COLUMN COLNew {type};
        const char *sqlStatement1 = "ALTER TABLE myMovies ADD COLUMN borrowMovie TEXT, borrowDate TEXT";
        BOOL added = sqlite3_prepare_v2(contactDB, sqlStatement1, -1, &selectStmt, NULL);
    }
}

最佳答案

sqlite3_step()之后,您至少需要调用一次sqlite3_prepare_v2()。这是实际执行查询的功能。如果要读取某些SELECT结果,则需要多次(对于每一行)调用该函数,但是,如果仅执行不带结果的查询,则只需要一次调用。

关于ios - 在iOS中将新列添加到SQLite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30703696/

10-10 02:56