目前,我已经创建了一个这样的表。
[self.fmDataBase executeUpdate:@"create table test (id integer primary key autoincrement, test text);"];
这很好用,但是将来我需要更多列才能获得我的表格。它看起来就像这样。
[self.fmDataBase executeUpdate:@"create table test (id integer primary key autoincrement, test text, test1 text);"];
不完全确定如何处理这种情况。随着时间的推移,我将需要添加列,删除列甚至更改列的名称。我想做这样的事情
if (version_1.1) {
[self.fmDataBase executeUpdate:@"alter table test add test1 text"];
} else if (version_1.2) {
[self.fmDataBase executeUpdate:@"alter table test add test2 text"];
} else if (version_1.3) {
[self.fmDataBase executeUpdate:@"alter table test add test3 text"];
}
或者通过某种方式比较查询并自动对其进行更改是否有办法实现?我想确保用户更新应用程序时应用程序不会中断。似乎到目前为止我必须为每个应用程序版本手动更新它。
答案 0 :(得分:0)
我真的不知道FMDB但是...如果您使用CoreData,它会自动为您处理。只要它具有每个数据模型版本的记录,它就会将 任何 以前版本的数据库迁移到启动时的最新版本。
初始化持久性存储协调器时,请为其指定以下标志:
NSDictionary *migrationOptions =@{NSMigratePersistentStoresAutomaticallyOption:@(YES),
NSInferMappingModelAutomaticallyOption:@(YES)};
对于数据库中的简单增量(例如,添加/删除表和字段,而不是关系的东西),这就足够了,并且工作正常。