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

