我的应用中有一个sqlite文件。该应用程序具有企业证书。
现在,如果我要创建包含数据库更改的新版本,那么:
1)我必须更改我的Sqlite文件名吗?
2)如果是,那么有任何方式可以解决使用我的应用程序的用户在应用程序中保存数据的情况。
否则,如果我创建新文件,那么旧数据将被删除!!!
提前致谢..
答案 0 :(得分:1)
1)AFAIK,当您更新时,旧的应用程序包将被新的应用程序包替换。但用户数据不受影响。 <)应用程序随用户使用而更改的sqlite数据库副本不会被删除/替换。
2)因此,您可以将更改作为查询发送到数据库:
a)新表以CREATE TABLE
个查询进入。
b)对表结构的更改以ALTER TABLE
个查询的形式进行。
3)现在,一个问题是,当您发运旧版本时,您没有考虑所有这些。那么,您如何确保仅在升级时执行 2a 和 2b 查询?
a)当您第一次获得应用程序的控制权时,在允许用户交互之前,在新版本中“已更改”的表格上触发虚拟SELECT SINGLE * FROM <tablename>
。
b)使用sqlite3_column_count
和sqlite3_column_name
找出数据库与[旧版本或新版本]对应的应用版本。
c)如果它是新版本(即新列已存在),则不执行任何操作,否则将我前面提到的查询解除为 2a 和 2b 。
答案 1 :(得分:0)
如果你还没有开始使用它,那么它可能没有实际意义,但Core Data可以很好地处理迁移(恕我直言);足以让它值得学习API的障碍。我们已经取得了巨大的成功(包括复杂的迁移,在“关系之间”插入新对象等)。