如何在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
相关产品推荐
相关产品推荐

