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

Kal*_*pak 8 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数据提供程序.它可能没有安装Blockquote

技术信息:

  • Mysql 5.0
  • C#
  • Dot Net框架2.0
  • Mysql Connector 6.3.6(与sql连接器的ver 6.0.3相同的问题)
  • 赢得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>
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*i Z 2

尝试这样的事情(我没有检查任何可能的版本/配置,但它目前在我的 Vista x64 for MySql some 5.5... 和 .net 连接器 6.4.3.0 - 使用 mysql.data.dll for v4 from .net /单声道下载)。

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

使用(var dt = new DataTable()){
    dt.Columns.Add("名称");
    dt.Columns.Add("描述");
    dt.Columns.Add("InvariantName");
    dt.Columns.Add("AssemblyQualifiedName");
    dt.Rows.Add("Mysql 的东西",
        “mysql更多”,
        “mysql客户端”,
        “MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,版本=6.4.3.0,文化=中性,PublicKeyToken=c5687fc88969c44d”);

    var f = DbProviderFactories.GetFactory(dt.Rows[0]);
    使用(var conn = f.CreateConnection()){
        conn.ConnectionString = "这里是你的字符串";
        conn.Open();
        // 并在这里做你的工作。
        Console.WriteLine(conn);
    }
}