如何通过C#使用mysql连接器连接到mysql而不实际安装连接器

时间:2011-06-18 11:51:41

标签: c# mysql database-connection mysql-connector

我们有一个基于dot net 2.0的C#产品,它使用Mysql作为数据存储。当我们在XP / Win 7机器上安装mysql连接器6.3.6时,我们可以从C#代码连接到数据库而不会出现任何问题。但是,当mysql连接器实际上没有安装在机器上但与可执行文件存在于同一目录中时,我们在连接到mysql数据库时遇到问题。我们不希望在我们希望产品运行的每台机器上安装连接器。我们希望在我们的代码中使用任何第三方dll(例如记录器)时直接使用connectory dll。

即使我们将mysql.data.dll复制到安装了exe的同一目录中,它也会构建但不会连接到数据库。

给出的错误是

  

无法找到请求的.Net Framework数据提供程序。它可能没有安装   块引用

技术信息:

  • Mysql 5.0
  • C#
  • Dot Net framework 2.0
  • Mysql Connector 6.3.6(与sql连接器的ver 6.0.3相同的问题)
  • Win XP / Win 7

当我们使用ASP.Net时,我们可以将下面给出的标签指定到web.config中,我们可以通过将dll放入bin目录直接连接到mysql数据库


<system.data>
  <DbProviderFactories>
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

为什么我们不能在C#中为桌面环境中的Client Server应用程序执行相同的操作。

3 个答案:

答案 0 :(得分:2)

尝试这样的事情(我没有检查任何可能的版本/配置,但它目前在我的Vista x64 for MySql上运行一些5.5 ...和.net连接器6.4.3.0 - 使用mysql.data.dll for v4来自.net / mono下载)。

确保下面引用的mysql.data.dll程序集位于当前目录中。

using(var dt = new DataTable()) {
    dt.Columns.Add("Name");
    dt.Columns.Add("Description");
    dt.Columns.Add("InvariantName");
    dt.Columns.Add("AssemblyQualifiedName");
    dt.Rows.Add("Mysql something", 
        "mysql more", 
        "mysqlClient",
        "MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d");

    var f = DbProviderFactories.GetFactory(dt.Rows[0]);
    using(var conn = f.CreateConnection()) {
        conn.ConnectionString = "your string here";
        conn.Open();
        // and do your work here.
        Console.WriteLine(conn);
    }
}

答案 1 :(得分:0)

这个page没有详细介绍.NET Framework依赖关系,但我怀疑Mysql连接器可能依赖于.NET框架的更高版本。

换句话说,您的应用程序使用Framework 2,但Mysql连接器使用的版本是什么?

答案 2 :(得分:0)

此条目:

<system.data>
  <DbProviderFactories>
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

...需要写入你的machine.config。

我认为默认路径应该是:

  

C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

<强>更新
您应该能够将MySQL .Net / Connector安装程序包含在安装包中。由于web.config中需要信息的相同原因,因此需要machine.config中的条目。