VS2019 C# UWP调试时如何打开项目根目录下已有的SQLite数据库
你当前代码拼接的路径指向应用独立本地存储目录Windows.Storage.ApplicationData.Current.LocalFolder,而你放在项目根目录下的预置数据库会被打包到应用的安装目录,二者路径不匹配。SQLite在指定路径找不到数据库文件时,默认会自动创建同名空数据库,这就是你看到打开空库的原因;添加Mode=ReadWrite参数后SQLite不会自动创建库,找不到文件就直接报错。
解决步骤
第一步:配置数据库文件的生成属性
在Visual Studio解决方案资源管理器中找到项目根目录下的orders.db文件,右键点击选择「属性」,修改两个配置项:- 「生成操作」设置为内容
- 「复制到输出目录」设置为如果较新则复制
该配置会确保你的预置数据库被打包到最终的应用包中。
第二步:调整数据库读取逻辑
应用安装目录是只读路径,无法直接写入数据库,所以正确逻辑是:首次启动应用时,把预置的数据库从安装目录复制到可读写的LocalFolder目录下,后续所有操作都使用LocalFolder下的副本。
对应代码示例:
using Microsoft.Data.Sqlite; using Windows.Storage; // 先判断LocalFolder中是否存在数据库文件,不存在就从安装目录复制 string localDbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "orders.db"); if (!File.Exists(localDbPath)) { // 获取安装目录下的预置数据库路径 Uri installDbUri = new Uri("ms-appx:///orders.db"); StorageFile installDbFile = await StorageFile.GetFileFromApplicationUriAsync(installDbUri); // 复制到LocalFolder await installDbFile.CopyAsync(ApplicationData.Current.LocalFolder, "orders.db"); } // 之后正常打开LocalFolder下的数据库即可 using (SqliteConnection db = new SqliteConnection($"Filename={localDbPath}")) { db.Open(); // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者IgorManowar
相关产品推荐
相关产品推荐

