更新/重新安装后保留的 SQLite Xamarin/.net Maui 数据库位置

问题描述 投票:0回答:1

我一直在尝试找到一个位置来存储我的应用程序数据库,我可以在我的 Android 模拟器上的文件浏览器中找到该数据库。此外,在重新安装应用程序后,根据我当前的设置,数据库将被擦除。我希望让用户能够轻松地将他们的数据库转移到新手机上,并使其能够适应更新/重新安装。

像我见过的大多数解决方案一样,我一直保存到 SpecialFolder.Personal 位置。

目前我有:

string dbName = "AppStuff.db";
string folderPath = stem.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
string fullPath = Path.Combine(folderPath, dbName);

我遇到过很多SpecialFolder.MyDocuments(这不是和Personal一样吗?) 有什么建议吗?

android sqlite xamarin storage maui
1个回答
0
投票

我遇到了同样的问题并偶然发现了你的问题。我已将答案发布在此线程上。但为了以防万一,也会在这里提供答案:

Xamarin Android 和 MAUI Android 文件位置似乎不同。 我的 Xamarin SQLite 数据库存储在:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "database.db3")

但是,在 Xamarin Android 上,文件路径是:

/data/user/0/my.app/files/.local/share/database.db3

但是当使用完全相同的代码访问 MAUI Android 中的数据库时,会导致:

/data/user/0/my.app/files/database.db3

我的解决方案是根据平台调整旧数据库的路径: '''

#if ANDROID
            var databaseV1Path = ".local/share/database.db3";
#else
            var databaseV1Path = "database.db3";
#endif

var legacyDatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), databaseV1Path)

我利用这个机会优化了我的数据库并将数据重新映射到 MAUI 的新数据库,因为图像名称也需要更改以适应调整大小的蛇形情况要求,然后删除旧的数据库文件。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.