C# Blazor使用SQLite时的DllNotFoundException
我在学习Blazor和数据库,也刚刚开始接触编程。
我创建了一个Blazor WebAssembly项目,使用.NET 10 LTS,并配有一个简单的本地SQLite数据库。
我只是想在项目中使用SQLite,因此安装了 System.Data.SQLite NuGet包。作为新手来说,市场上有这么多SQLite的 NuGet包,真的挺让人困惑该选哪一个。
然后我用了一段简单的代码:
string sqQuery = "SELECT * FROM";
try
{
SQLiteConnection sqConnection = new SQLiteConnection(@"Data Source=\TalentData\test1.db");
SQLiteCommand sqCommand = new SQLiteCommand();
}
catch(Exception exept)
{
debugException = exept.ToString();
}
但我总是得到这个异常:
System.DllNotFoundException: e_sqlite3 at System.Data.SQLite.SQLite3.StaticIsInitialized()
看起来像是缺少了SQLite的一个DLL,该如何修复?
我已经在网上搜索过,但找不到这个问题的解决办法,网上有太多不同的建议。
也尝试了 Microsoft.EntityFrameworkCore.Sqlite 包,不过结果还是同样的错误。
解决方案
在对sqlite进行Google搜索时,显示的第一个结果是 SQLite Home Page。如果前往 SQLite Home Page 并点击 Download,就会看到一个展示多种下载选项的网页,看起来可选项确实很多。
你说你正在使用 .NET 10 LTS。根据 NuGet入门介绍:
对于.NET(包括.NET Core),微软支持的共享代码机制是NuGet,它定义了.NET包的创建、托管和使用方式,并为这些角色提供工具。
回到 SQLite下载页面,如果在标题 Precompiled Binaries for .NET 下查看,会看到
请参见 System.Data.SQLite.org 网站。
打开 System.Data.SQLite.org 网站后,可以看到如下内容:
System.Data.SQLite是一个用于SQLite的 ADO.NET提供程序。
如何使用这个库 System.Data.SQLite可在nuget.org上获得。常见用法通常涉及添加两个包,一个是System.Data.SQLite,一个包含SQLite的本机构建。例如:
<ItemGroup> <PackageReference id="System.Data.SQLite" version="2.0.3"/> <PackageReference id="SourceGear.sqlite3" version="3.50.4.5"/> </ItemGroup>
根据文档,应该下载/安装两个 [Nuget包]:
- System.Data.SQLite(另一个选项可能是 Microsoft.Data.SQLite。如果使用“Microsoft” NuGet包,由于你使用的是.NET 10,请使用主版本号为 '10' 的包,例如10.0.9。)
- SourceGear.sqlite3
附加资源: