如何使我的数据库能够适应更新/重新安装?

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

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

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

我遇到了很多 SpecialFolder.MyDocuments。这不是和个人一样吗?有什么建议吗?

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.