【C#】.NET Framework 4.8环境下使用Sqlite的问题总结

问题1:使用System.Data.Sqlite.dll出现不存在e_sqlite3.dll提示

csharp 复制代码
无法加载 DLL"e_sqlite3": 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

csharp 复制代码
Exception: Library e_sqlite3 not found

问题2:使用System.Data.Sqlite.Core.dll出现找不到Sqlite入口

问题3:使用Microsoft.Data.Sqlite.dll提示一个错误

csharp 复制代码
Microsoft.Data.Sqlite.SqliteConnection"的类型初始值设定项引发异常

问题4:错误提示如下,因为这个问题弃用了System.Data.Sqlite转而使用Microsoft.Data.Sqlite(这个问题需要切换x86或者x64构建项目,但是同时也会修改生成目标位置,所以不使用这个了)

csharp 复制代码
You need to call SQLitePCL.raw.SetProvider().  If you are using a bundle package, this is done by calling SQLitePCL.Batteries.Init()

上述所有问题的解决方案是

使用NuGet包有

1.ClosedXML(免费第三方可商用导出Excel,不需要则不用管)

2.Microsoft.Data.Sqlite(会自动安装依赖Microsoft.Data.Sqlite.Core)

3.SQLitePCLRaw.bundle_winsqlite3(解决e_sqlite3的问题,注意名称不要安装错误)

4.System.Memory (本身会自动安装,但是版本一定要是4.5.5的,对应问题3)

一段使用实例:

csharp 复制代码
public DataTable ExportDataTableToExcel(string dbPath, string queryString)
{
    var dataTable = new DataTable();

    // 创建连接字符串并建立连接
    var connectionString = $"Data Source={dbPath}";
    using (var connection = new SqliteConnection(connectionString))
    {
        if(connection.State != ConnectionState.Open)
        {
            connection.Open();
        }

        // 创建命令并执行查询
        using (var command = new SqliteCommand(queryString, connection))
        {
            // 使用 SqliteDataReader 读取数据
            using (SqliteDataReader reader = command.ExecuteReader())
            {
                // 将查询结果加载到 DataTable 中
                dataTable.Load(reader);
            }
        }
    }

    return dataTable;
}

完结!(.net 8没发现这么多毛病,以前用.net4.8也没发现有这么多问题。)

相关推荐
格林威2 小时前
C# 相机图像阴影校正:使用OpenCvSharp实现工业相机阴影平场校正功能
人工智能·数码相机·opencv·计算机视觉·c#·机器视觉·工业相机
sunoo-2293 小时前
【网络编程 + 数据库】select 与 epoll 核心区别详解 + SQLite 入门到 C 接口全攻略
linux·网络·数据库·vscode·学习·sqlite
zbyyd3 小时前
Linux 系统编程 :select/epoll 多路复用与 SQLite 数据库实战
linux·数据库·sqlite
俊昭喜喜里3 小时前
c#中的构造函数
开发语言·数据库·c#
hahaha60163 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
koi77u3 小时前
嵌入式学习———sqlite数据表
linux·数据库·学习·sqlite
xx~t3 小时前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
谈资一本本4 小时前
电脑全能修复大师 Gilisoft Total Repair,智能检测修复系统、应用、游戏问题!DLL、DirectX、.NET运行库损坏修复+缺失自动补齐!
游戏·电脑·.net
点心的游戏开发世界12 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
淡海水13 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing