【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也没发现有这么多问题。)

相关推荐
Quz3 小时前
QML TableView:基于SQLite实现增删改查
数据库·qt·sqlite
心疼你的一切4 小时前
Unity开发利器:ScriptableObject的数据容器设计与内存优化原理
microsoft·unity·c#·游戏引擎
.NET修仙日记4 小时前
.NET WinForms + WPF 综合学习路线:从传统到现代的.NET桌面开发
学习·c#·.net·wpf·.net core·winforms
WangMing_X5 小时前
C#上位机软件:2.5 体验CLR实现多语言混合编程
java·开发语言·c#
小草儿7997 小时前
gbase8s之.net8连接8s之mysql模式(windows)demo
windows·mysql·.net
唐青枫7 小时前
C#.NET Configuration 全面解析:从多环境到强类型绑定实战
c#·.net
YuanlongWang12 小时前
C# 基础——装箱和拆箱
java·开发语言·c#
QQ129584550417 小时前
C# 如何能够创建一个MVC的WEB项目
c#·mvc
星河队长20 小时前
VS创建C++动态库和C#访问过程
java·c++·c#