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

如何在MAUI项目中连接已有SQLite数据库(sqlite-net-pcl)

MAUI项目连接已有SQLite数据库(Company.db3)的解决方案

1. 正确放置数据库并配置属性

  • 将Company.db3放入项目的Resources/Raw目录(无此目录则手动创建)
  • 右键该数据库文件,设置:
    • 生成操作:Embedded resource
    • 复制到输出目录:如果较新则复制

2. 复制嵌入数据库到应用可读写路径

MAUI应用仅能对私有数据目录进行读写操作,需先将嵌入的数据库复制到该目录:

private async Task CopyDatabaseIfNotExists()
{
    const string DbFileName = "Company.db3";
    // 获取应用私有数据目录路径
    var targetPath = Path.Combine(FileSystem.AppDataDirectory, DbFileName);

    if (!File.Exists(targetPath))
    {
        // 从嵌入资源读取数据库流并写入目标路径
        using var stream = await FileSystem.OpenAppPackageFileAsync(DbFileName);
        using var outputStream = File.OpenWrite(targetPath);
        await stream.CopyToAsync(outputStream);
    }
}

3. 初始化SQLite连接

先执行复制操作,再用目标路径创建数据库连接:

// 先确保数据库已复制到可访问路径
await CopyDatabaseIfNotExists();

// 构建数据库路径并创建连接
var dbPath = Path.Combine(FileSystem.AppDataDirectory, "Company.db3");
var conn = new SQLiteConnection(dbPath);

// 后续可通过conn执行查询、插入等数据库操作

4. 排查要点

  • 确认文件名完全匹配(部分平台区分大小写)
  • 检查项目文件(.csproj)是否包含<EmbeddedResource Include="Resources\Raw\Company.db3" />,确保文件被正确嵌入
  • 调试时可输出FileSystem.AppDataDirectory的具体路径,手动验证数据库是否成功复制

内容的提问来源于stack exchange,提问作者Hakan DOĞAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:37:04