如果该列不可用,我正在尝试将两个新列插入到我的 SQLite 数据库中。一切都很顺利,“添加”的 BOOL 也为 YES。但这些列不在我的 table 上!
-(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_prepare_v2()
之后至少调用一次 sqlite3_step()
。这是实际执行查询的函数。如果您正在读取一些 SELECT
结果,您将需要多次调用该函数(对于每一行),但如果您只是执行一个没有结果的查询,则只需要一次调用。
关于ios - 在 iOS 中向 SQLite 添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703696/