我一直在尝试找到一个位置来存储我的应用程序数据库,我可以在我的 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一样吗?) 有什么建议吗?
我遇到了同样的问题并偶然发现了你的问题。我已将答案发布在此线程上。但为了以防万一,也会在这里提供答案:
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 的新数据库,因为图像名称也需要更改以适应调整大小的蛇形情况要求,然后删除旧的数据库文件。
希望这有帮助!