应用程序更新中的 U1Db QML API 数据库

应用程序更新中的 U1Db QML API 数据库

我已经在 QML 中创建了一个使用 U1Db qml Api(sdk 15.04.5)的应用程序。该应用程序创建一个数据库来保存其数据。该应用程序已加载到 Ubuntu 商店并可供用户使用。

数据库创建如下:

U1db.Database {
      id: mypeopleDb
      path: Qt.resolvedUrl("MyPeople_db");
}

当我将新版本的应用程序上传到 Ubuntu 商店并且用户更新旧应用程序时,现有数据库会发生什么?旧数据库会丢失?被覆盖?被重复使用?

解决这种情况的最佳方案是什么?

谢谢

答案1

为了对我的问题得到肯定的答复,我已经尝试使用我的应用程序:

1)我已将新版本的应用程序上传到 Ubuntu 商店

2)我已将旧版本应用程序(已安装在我的平板电脑上)更新为新版本(使用平板电脑的 ubuntu 更新功能)

结论:

旧应用程序版本创建的旧数据库未被新应用程序重用:创建了一个新的空白数据库(未对数据库结构进行任何修改)。

我已经确认旧数据库没有丢失(保留在文件系统中)。使用 U1Db QML API 创建的数据库位于以下路径下的文件夹中:

~phablet/.local/share//file:/opt/click.ubuntu.com/“applicationName”/“version”/“NameApplication”/

其中:“applicationName”是在源代码的 Main.qml 中插入“applicationName”字段的值

“version” 是应用程序版本(例如:1.1)

“NameApplication”是应用程序的名称

因此旧版 App 1.0 的数据库位于:

~phablet/.loca/share/“applicationName”/file:/opt/click.ubuntu.com/“applicationName”/1.0/“NameApplication”/

新版本 1.1 的版本如下:

~phablet/.loca/share/“applicationName”/file:/opt/click.ubuntu.com/“applicationName”/1.1/“NameApplication”/

要使用旧数据库,必须将数据库文件从旧文件夹复制到新文件夹,覆盖另一个文件夹。为此,可以使用终端应用程序或平板电脑的文件管理器(在文件管理器菜单中启用显示隐藏文件夹的选项后(.local 是主文件夹中的隐藏文件夹))。

我已经验证无需 QT.resolveurl("...") 即可创建数据库:

U1db.Database {
        id: mypeopleDb1_0 
        path: "MyPeople_db";
}

数据库文件将放置在以下文件夹中:

.local/share/“应用程序名称” 应用程序版本号没有任何参考。

所以我认为正确的解决方案是不要使用 QT.resolvedUrl() 来防止应用程序更新时出现问题。

因此,新的问题是:如何从 DB 文件创建并导出/导入内容?似乎无法使用 U1DB QML API....

相关内容