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

C#项目中如何配置SQLite数据库文件的相对访问路径

解决方案
  • 问题本质:C# 程序运行时的默认工作目录为编译输出目录(通常是bin/Debug/[框架版本]或bin/Release/[框架版本]路径),直接写相对路径会以该目录为基准,而非项目根目录,所以会找不到数据库文件。
  • 第一步:配置数据库文件同步规则
    在 Visual Studio 解决方案资源管理器中右键db/access.db文件,选择「属性」,调整两项配置:
    • 生成操作:选择「无」
    • 复制到输出目录:选择「如果较新则复制」
      该配置会在每次编译时自动将db文件夹及内部的数据库文件同步到输出目录,保持相对路径结构和项目根目录一致。
  • 第二步:拼接运行时路径构造连接字符串
    使用AppContext.BaseDirectory(.NET Core/.NET 5+ 环境,.NET Framework 环境可替换为AppDomain.CurrentDomain.BaseDirectory)获取程序运行根目录,拼接数据库相对路径即可,无需写死绝对路径。

修正后的完整代码如下:

try 
{
    // 拼接运行时根目录和数据库相对路径
    string dbPath = Path.Combine(AppContext.BaseDirectory, @"db/access.db");
    string connectionString = $@"data source={dbPath}";
    using (SQLiteConnection conn = new SQLiteConnection(connectionString))
    {
        conn.Open();
        using (SQLiteCommand fmd = conn.CreateCommand())
        {
            fmd.CommandText = @"SELECT * FROM 'test'";
            fmd.CommandType = CommandType.Text;
            SQLiteDataReader r = fmd.ExecuteReader();
            while (r.Read())
            {
                Debug.WriteLine("foo");
            }
            // 无需手动调用Close,using语法会自动释放连接资源
        }
    }
}
catch (Exception e)
{
    Debug.WriteLine($"Errors: {e.Message}");
}

补充注意:你的项目结构中标注的数据库文件名为acces.db,代码里写的是access.db,请确认文件名拼写完全一致,避免因拼写错误触发找不到文件的异常。同时原示例代码存在两处语法问题:SQLiteConnection构造方法缺少闭合括号、CommandText的SQL字符串缺少闭合引号,上述代码已经做了修正。

内容的提问来源于stack exchange,提问作者HittingMyCode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:36:04