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

.NET MAUI配置SQLite数据库绝对路径报错,求解决方案

.NET MAUI Android模拟器中SQLite数据库路径正确配置方案

直接使用Windows本地绝对路径给Android模拟器是错误的——Android模拟器拥有独立的沙箱文件系统,Windows的本地路径在模拟器环境中不存在,且应用没有权限访问这类外部路径,这就是你遇到SQLite.SQLiteException的原因。

以下是两种可行的解决方案:

方案一:保留原路径,通过ADB工具拉取/推送数据库文件

原代码的路径是模拟器应用沙箱内的合法路径,你可以通过ADB命令将数据库文件导出到本地,用DB Browser修改后再推回模拟器:

  1. 确认应用包名(可在MAUI项目的AndroidManifest.xml中查看package属性)
  2. 执行拉取命令:
adb pull /data/data/[你的应用包名]/files/SQLite.db3 C:\你想要保存的本地路径
  1. 用DB Browser修改完成后,推送回模拟器:
adb push C:\你保存的本地路径/SQLite.db3 /data/data/[你的应用包名]/files/

方案二:将数据库放在模拟器共享存储目录(如Download)

修改代码让数据库直接存放在模拟器的公共Download目录,这样你可以直接通过模拟器的文件管理器找到文件,也能通过模拟器的共享文件夹功能同步到本地:

修改Constants类代码

public static class Constants
{
    private const string DBFileName = "SQLite.db3";
    public const SQLiteOpenFlags Flags = 
        SQLiteOpenFlags.ReadWrite |
        SQLiteOpenFlags.Create |
        SQLiteOpenFlags.SharedCache;
    public static string DatabasePath
    {
        get
        {
#if ANDROID
            // 获取Android外部存储的Download目录
            var downloadDir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
            return Path.Combine(downloadDir.AbsolutePath, DBFileName);
#else
            // 其他平台保留原路径逻辑
            return Path.Combine(FileSystem.Current.AppDataDirectory, DBFileName);
#endif
        }
    }
}

配置Android权限

在Android项目的AndroidManifest.xml中添加存储权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:minSdkVersion="33" />

动态申请权限

Android 6.0及以上版本需要在运行时动态申请存储权限,你可以在应用启动时添加权限申请逻辑:

#if ANDROID
var status = await Permissions.CheckStatusAsync<Permissions.StorageWrite>();
if (status != PermissionStatus.Granted)
{
    status = await Permissions.RequestAsync<Permissions.StorageWrite>();
}
#endif

两种方案对比:方案一无需修改应用逻辑,适合临时调试;方案二无需频繁使用ADB命令,日常查看更便捷,但需要处理权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:43:20