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

相关推荐
工程师0073 小时前
C# 继承、多态、虚方法表(VTable)原理
c#·多态·继承·虚方法表
TheRouter5 小时前
Agent Harness系列(三):记忆层的3种持久化架构——从SQLite到向量库
人工智能·架构·sqlite·llm·ai-native
月昤昽6 小时前
autocad二次开发 3.阵列与面域
c#·二次开发·autocad二次开发
唐青枫9 小时前
别只会用 MemoryCache!C#.NET CacheManager 详解:多级缓存、Region 与 Redis 实战
c#·.net
吴可可12310 小时前
PointF坐标精度与使用注意事项
c#
鸽子一号12 小时前
c#Modbus通信
开发语言·c#
Azhao110614 小时前
手把手教你玩转排行榜激励:商城运营必备技能
sqlite
cjp56014 小时前
001.Blazor简介
c#
工程师00715 小时前
C# 程序集、IL、CLR 执行流程
c#·clr·il·程序集
xxjj998a15 小时前
PHP vs C#:核心差异全解析
开发语言·c#·php