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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:48:00