You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI应用SQLite本地数据库存储路径问题及优化咨询

.NET MAUI SQLite数据库路径问题解决

Android模拟器上的数据库存储路径

你用FileSystem.AppDataDirectory在Android模拟器中对应的实际路径是:

/data/data/{你的应用包名}/files/Student.db3

比如你的应用包名是com.example.StudentCRUD,完整路径就是/data/data/com.example.StudentCRUD/files/Student.db3

要找到这个文件,你可以通过Android Studio的Device File Explorer:

  • 打开Android Studio并连接模拟器
  • 打开Device File Explorer(路径:View > Tool Windows > Device File Explorer)
  • 按照上述路径导航,就能找到目标数据库文件

关于将数据库保存到项目当前目录的问题

Android系统对应用安装目录有严格的只读限制,AppDomain.CurrentDomain.BaseDirectory指向的就是这个只读目录,所以无法在这里写入数据库文件,这也是你尝试后无效的原因。

如果想要更方便地访问数据库文件,可以选择以下两种可行方案:

方案1:保存到外部公共文档目录

需要先在AndroidManifest.xml中添加存储权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后修改路径代码:

string dbPath = Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDocuments).AbsolutePath, "Student.db3");
_dbConnection = new SQLiteAsyncConnection(dbPath);

这个路径在模拟器中是/storage/emulated/0/Documents/Student.db3,可以直接通过模拟器的文件管理器找到。

方案2:保存到应用外部私有目录(无需额外权限)

这个目录属于应用私有,但可以通过文件管理器访问(部分Android版本需开启显示隐藏文件):

string dbPath = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).AbsolutePath, "Student.db3");
_dbConnection = new SQLiteAsyncConnection(dbPath);

对应的路径是/storage/emulated/0/Android/data/{你的应用包名}/files/Student.db3

桌面端能否访问Android模拟器的本地数据库?

直接跨系统访问是做不到的,因为Android模拟器的文件系统和桌面端是完全隔离的。你可以通过以下两种方式获取数据库文件:

  • 使用Android Studio的Device File Explorer找到数据库文件,右键选择Save As导出到桌面端
  • 在应用中添加导出逻辑,将数据库文件复制到外部存储目录,再从模拟器的共享位置导出到桌面

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:45:45