.NET程序编译后SQLite连接报错:Value cannot be null. (Parameter 'path1')
解决方案
检查连接字符串的隐性路径解析
即使你没手动调用Path.Combine,SQLite内部解析连接字符串时可能会触发该方法。如果连接字符串使用了|DataDirectory|\xxx.db这类占位符,编译后|DataDirectory|可能未正确赋值,导致内部传入空参数。解决方式:- 显式设置数据目录:
AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\你的数据库绝对路径"); - 直接在连接字符串中使用绝对路径,避免占位符。
- 显式设置数据目录:
确认NuGet包与.NET版本兼容
检查所用SQLite NuGet包(如System.Data.SQLite.Core或Microsoft.Data.Sqlite)的版本是否适配你的.NET框架版本。比如.NET 6+需使用对应兼容的稳定版包,旧版本可能存在编译后路径解析的bug,尝试升级或降级到匹配版本。排查编译后运行环境的路径变量
调试和编译后的运行环境可能存在差异,部分路径相关变量可能为空。在代码中添加日志输出:- 输出数据库路径变量值
- 输出当前工作目录:
Directory.GetCurrentDirectory()
对比调试和编译后的输出,确认变量是否一致。
检查连接字符串格式
连接字符串中的多余空格、拼写错误或格式问题可能导致SQLite内部解析出错,间接触发Path.Combine异常。确保连接字符串格式规范,例如:string connStr = "Data Source=C:\\MyApp\\mydb.db;Version=3;";彻底清理编译缓存
手动删除项目的bin和obj目录,再重新编译项目,避免残留的旧编译文件引发异常。
内容的提问来源于stack exchange,提问作者Gitches
相关产品推荐
相关产品推荐

