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