如何使用mysql连接器通过C#连接到mysql而不实际安装连接器
我们有一个基于dot net 2.0的C#产品,它使用Mysql作为数据存储。 当我们在XP / Win 7机器上安装mysql连接器6.3.6时,我们能够从C#代码连接到数据库而没有任何问题。 但是,当mysql连接器实际上没有安装在机器上但与可执行文件存在于同一目录中时,我们在连接到mysql数据库时遇到问题。 我们不希望在我们希望产品运行的每台机器上安装连接器。 我们希望connectory dll可以直接使用,因为我们在代码中使用任何第三方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数据库
为什么我们不能在C#中为桌面环境中的Client Server应用程序执行相同的操作。
尝试这样的事情(我没有检查任何可能的版本/配置,但它目前在我的Vista x64上为MySql工作一些5.5 …和.net连接器6.4.3.0 – 使用mysql.data.dll for v4 from .net / mono下载)。
确保下面引用的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 something”, “更多的mysql”, “的mysql” “MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version = 6.4.3.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d”); var f = DbProviderFactories.GetFactory(dt.Rows [0]); 使用(var conn = f.CreateConnection()){ conn.ConnectionString =“你的字符串在这里”; conn.Open(); //在这里做你的工作 Console.WriteLine(conn);在 } }
这个页面没有详细介绍.NET Framework依赖关系,但我怀疑Mysql连接器可能依赖于.NET框架的更高版本。
换句话说,您的应用程序使用Framework 2,但Mysql连接器使用的是什么版本?
此条目:
…需要写入你的machine.config。
我相信默认路径应该是这样的:
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG
更新
您应该能够将MySQL .Net / Connector安装程序包含在安装包中。 由于web.config中需要信息的相同原因,因此需要machine.config中的条目。