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

相关推荐
我是唐青枫4 小时前
C#.NET 索引器完全解析:语法、场景与最佳实践
c#·.net
追逐时光者5 小时前
一款基于 .NET 9 构建的企业级 Web RBAC 快速开发框架
.net
FuckPatience9 小时前
C# 使用内存映射文件实现进程间通信
c#
幌才_loong10 小时前
深入解析 C# async/await 执行原理:从语法糖到状态机
后端·.net
kylezhao201911 小时前
如何在 C# 项目中使用 NLog 进行日志记录
开发语言·c#
Caco.D12 小时前
Aneiang.Pa 代理池(Proxy Pool)功能与 ASP.NET Core Web API 集成实战
爬虫·asp.net·.net·aneiang.pa
小菱形_12 小时前
【C#】IEnumerable
开发语言·c#
爱敲点代码的小哥12 小时前
Directoy文件夹操作对象 、StreamReader和StreamWriter 和BufferedStream
开发语言·c#
CodeCraft Studio13 小时前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建折线图
java·c#·excel·aspose.cells·excel图表·excel api库·excel折线图
m5655bj14 小时前
C# 在 PDF 文档中添加电子签名
开发语言·pdf·c#