我有a .NET 4.5 application个正在启动和运行.此应用程序可以连接到SQL Server和MS Access数据库文件.

现在,我想使用一个SQLite数据库.

因此,我从this link下载了SQLite ADO.NET4.5数据提供程序(101),并将其安装在我的笔记本电脑上.

我的连接字符串如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="assemblies" type="Simple.Framework.AssembliesConfigurationSection, Simple.Framework"/>
  </configSections>

  <connectionStrings>
    <!--<add name="MyMSAccessConnStr" 
         connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DB\access_db_file.mdb;Persist Security Info=False" 
         providerName="System.Data.OleDb"/>-->
    <!--<add name="MySQLServerConnStr" connectionString="Data Source=.\sqlexpress;Initial Catalog=gre;Integrated Security=True" 
         providerName="System.Data.SqlClient"/>-->
    <add name="MySQLiteConnStr" connectionString="Data Source=C:\DB\sqlite_db_file.db;Version=3;"
         providerName="System.Data.SQLite"/>
  </connectionStrings>

  <startup>
    
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>

</configuration>

在上面的代码中,MyMSAccessConnStrMySqlServerConnStr已经可以正常工作了.

但是,SQLite连接不起作用.它显示以下错误:

An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll

Additional information: Unable to find the requested .Net Framework Data Provider.  
It may not be installed.

我也没有在广汽中看到System.Data.Sqlite.

我如何解决此问题?

推荐答案

出现该错误的原因是您的系统无法识别System.Data.SQLite ADO.NET数据库提供程序.

您可以自己将其安装在GAC中,并在machine.config中声明它,如下所示:Obtaining a DbProviderFactory

但你don't need to install it in the GAC:

  • 在你的app.config人中这样宣布它:

      <configuration>
          <connectionStrings>
              <add name="PTSystemMSAccess" connectionString="Data Source=c:\mypath\my.db" providerName="System.Data.SQLite"/>
          </connectionStrings>
    
          <system.data>
              <DbProviderFactories>
                  <remove invariant="System.Data.SQLite"/>
                  <add name="SQLite Data Provider"
                      invariant="System.Data.SQLite"
                      description=".Net Framework Data Provider for SQLite"
                      type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
              </DbProviderFactories>
          </system.data>
    
      </configuration>
    
  • 只需将System.Data.SQLite.dllSQLite.Interop.dll复制到QuizApplication.exe文件旁边即可.

Csharp相关问答推荐

在包含空项的列表上使用具有断言T的摘要表

当Visual Studio处于升级管理模式时,无法安装Torch运行时

为什么使用DXGI输出复制和Direct 3D时捕获的图像数据全为零?

如何从顶部提取发票号作为单词发票后的第一个匹配

我可以 suppress 规则CS 9035一次吗?

我无法在Ubuntu下编译使用microsoft.extension.configurationbuilder jsonapi和mono mcs的c#应用程序

以自动方式注销Azure身份应用程序

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

Unity中的刚体2D运动

为什么在使用动态obj+类obj时会调用串联?

C#带主体的主构造函数?

ASP.NET Core MVC将值从视图传递到控制器时出现问题

是否由DI容器自动处理由ActivatorUilties.CreateInstance()创建的服务?

如何允许数组接受多个类型?

如何从另一个类的列表中按ID取值

将FileStream的特定部分作为字节数组读取

Blazor服务器项目中的Blazor/.NET 8/Web API不工作

在平行内使用跨度.用于循环

如何在C#控制台应用程序中获取用户输入并将其作为订单项目进行处理?

外部应用&&的LINQ;左外部连接&类似于PostgreSQL的查询