高版本System.Data.SQLite打开低版本加密SQLite数据库遇异常求助
解决方案
一、在新项目中使用旧版本System.Data.SQLite
NuGet官方源虽已移除1.0.112及以下版本,但可通过本地安装方式获取:
- 从System.Data.SQLite的官方GitHub发布归档中找到v1.0.106版本的
.nupkg包(需匹配.NET Framework 4.7环境)。 - 在VS2022中添加本地包源:依次点击「工具」→「NuGet包管理器」→「包管理器设置」→「包源」→「添加」,选择存放
.nupkg文件的文件夹。 - 回到项目的NuGet包管理器,切换至本地包源,搜索并安装v1.0.106版本的System.Data.SQLite,即可沿用原有代码正常打开数据库。
二、用新版System.Data.SQLite兼容旧加密数据库
新版(v1.0.115+)默认移除了旧版免费加密实现,需通过以下方式兼容:
方案1:改用SQLitePCLRaw组件
SQLitePCLRaw支持旧版SQLite加密格式,操作步骤:
- 在NuGet中安装
SQLitePCLRaw.core和SQLitePCLRaw.bundle_e_sqlcipher包。 - 调整代码如下:
using SQLitePCL; // 初始化组件 Batteries_V2.Init(); // 打开数据库并设置密钥 var dbHandle = SQLite3.Open("customDB.sqlite"); SQLite3.Key(dbHandle, "你的数据库密码"); // 示例:执行查询 using (var stmt = SQLite3.Prepare(dbHandle, "SELECT * FROM 表名")) { while (SQLite3.Step(stmt) == SQLite3.Result.Row) { // 处理查询结果 } }
方案2:避免使用商业SEE组件
报错提示的System.Data.SQLite.SEE.License是商业加密组件的许可证文件,若不想使用商业版,此路径无法兼容旧加密数据库,不推荐。
内容的提问来源于stack exchange,提问作者Marcus Aurelius
相关产品推荐
相关产品推荐

