使用Visual Studio 2019的SQL/SQLite工具箱建立SQLite与Xamarin.Android项目的连接
Xamarin.Android 连接SQLite数据库可行思路
1. 迁移数据库文件到项目资源
- 找到SQL/SQLite工具箱导入的
.db/.sqlite格式本地数据库文件,复制到Xamarin.Android项目的Assets目录中 - 右键点击项目内的数据库文件,打开「属性」面板,将「生成操作」设置为
AndroidAsset,「复制到输出目录」设置为如果较新则复制,确保文件会被打包到APK中
2. 初始化数据库到可读写路径
Android系统中Assets目录下的资源为只读属性,无法直接修改操作,需要在应用首次启动时将数据库复制到应用私有可读写目录,参考代码如下:
// 替换为你的数据库文件名 const string DbFileName = "test_database.db"; var dbTargetPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Personal), DbFileName ); // 仅首次启动时复制数据库 if (!File.Exists(dbTargetPath)) { using var assetStream = Assets.Open(DbFileName); using var targetStream = File.Create(dbTargetPath); assetStream.CopyTo(targetStream); }
3. 配置连接操作
推荐两种生态内成熟的连接方案:
- 方案1:使用官方Sqlite库
安装NuGet包Microsoft.Data.Sqlite后,直接用生成的目标路径作为连接字符串即可建立连接:var connection = new SqliteConnection($"Data Source={dbTargetPath}"); - 方案2:使用轻量ORM插件sqlite-net-pcl
这是Xamarin.Android开发最常用的SQLite操作工具,安装NuGet包sqlite-net-pcl后,直接初始化实例即可完成连接:var db = new SQLiteConnection(dbTargetPath);
常见问题排查
- 检查数据库文件的生成操作配置,避免打包时未被嵌入APK导致文件缺失
- 确认使用的SQLite操作库版本与你的数据库文件版本兼容,避免低版本文件无法被高版本库读取
- 连接失败时可打印
dbTargetPath,检查对应路径下是否存在完整的数据库文件
内容的提问来源于stack exchange,提问作者Aymen Gondech
相关产品推荐
相关产品推荐

