Windows Universal现有应用程序向SQLite表添加新列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows Universal现有应用程序向SQLite表添加新列相关的知识,希望对你有一定的参考价值。

我们在Windows商店中发布了Windows 8.1通用应用程序。由于现在需求更改,我们需要向现有表添加一些字段。我们使用SQLite for Windows Runtime(Windows 8.1)和SQLite for Windows Phone 8.1。现在,如果我们向现有表添加一些新字段(通过更新模型类),那么在现有用户更新应用程序时会导致任何问题吗?

如果我们创建一个新表,而不是添加新列,那么这会导致任何问题,还是比添加新字段更安全?

答案

即使使用现有的SQLite数据库,向现有表添加新列也是完全安全的。创建新表也是如此。具体过程取决于您使用的SQLite库。

如果您使用SQL查询直接查询数据库,那么您将使用ALTER TABLE ... ADD COLUMN查询。如果您使用的是像sqlite-net-pcl这样的库,那么在运行CreateTable方法时,您可以立即自动迁移。正如documentation所说:

目前,自动迁移仅支持添加新列。如果您的类具有与表中的列无关的新属性,则将执行alter table ... add column命令以使数据库保持最新。这些新列将没有默认值,因此将为null。

小费

更改模型时,请始终根据以前版本的数据库测试更改。这可以通过两种方式完成:

  • 从Store安装现有版本,启动应用程序并使用它以便它包含一些数据,然后关闭它并转到C:Users[UserName]AppDataLocalPackages。在这里导航到Packages,找到你的应用程序的包文件夹。在里面去LocalState你应该找到你的sqlite数据库。将其复制到某处,卸载Store版本并启动新版本以进行调试,并在App.xaml.cs构造函数中放置断点。当调试器停在那里时,将原始数据库复制回应用程序包LocalState文件夹中的相同位置并继续调试。观察数据库是否正确迁移。
  • 使用Git源代码控制,将历史记录转到上一版本的提交,安装应用程序进行调试,用一些数据填充数据库,关闭应用程序。现在转到最新的提交并启动应用程序再次进行调试。验证迁移是否有效。

以上是关于Windows Universal现有应用程序向SQLite表添加新列的主要内容,如果未能解决你的问题,请参考以下文章

Windows Universal App 维护开放的 WebSocket

Angular Universal (s-s-r) 错误:无法在视图目录中查找视图“索引”

当应用程序不在前台时,如何在 Windows Universal 中获得正确的时间间隔?

DB Query Analyzer 6.03, the most excellent Universal DB Access tools on any Microsoft Windows OS(示例代

Windows Universal App 8.1 自定义用户控件

如何让 Angular Universal 和 PWA 协同工作?