在Smartface应用程序升级上更改现有数据库的最佳方法是什么?
我的应用程序的新版本的数据库结构略有不同(添加了新列)。
升级时,GUI设计的数据集是新的(使用新列),而现有数据库是旧的(没有这些列)。
现有数据库包含用户数据意味着将其替换为空数据不是一种选择。
以下代码无效(未添加列):
Data.execute("ALTER TABLE TableSettings ADD COLUMN NewColumn TEXT;");
Data.execute("UPDATE TableSettings SET NewColumn = 'test is fine';");
Data.DatasetSettings.refresh();
请分享一些如何解决问题的想法。
答案 0 :(得分:0)
在升级期间,如果表的结构相同且keepDataOnUpdate标志为true,则将保留数据。
的方法1 强>
您可以使用新表来处理。将数据从退出复制到新数据并删除旧数据中的记录。不要删除旧表。
的方法2 强>
您可以像现在一样改变表格。对于将来的版本,请向数据库添加一些检查,以避免通过脚本重新添加列。使用动态数据集来处理该表。静态数据集在发布期间与表元紧密绑定;使用静态数据集,您无法使用新列。
在Smartface的未来版本(预期的4.5或4.6)中,将向用户提供数据库管理,以便更好地控制数据库内容以及对更新过程的更多控制。