【发布时间】:2011-09-17 18:09:22
【问题描述】:
我们有一个基于 dot net 2.0 的 C# 产品,它使用 Mysql 作为数据存储。当我们在 XP/Win 7 机器上安装 mysql 连接器 6.3.6 时,我们能够从 C# 代码连接到数据库而没有任何问题。但是我们在连接到 mysql 数据库时遇到了一个问题,因为 mysql 连接器实际上没有安装在机器上,而只是存在于与可执行文件相同的目录中。我们不想在希望产品运行的每台机器上都安装连接器。我们希望直接使用连接器 dll,因为我们在代码中使用任何 3rd 方 dll(例如记录器)。
即使我们将 mysql.data.dll 复制到安装 exe 的同一目录中,它也会构建但不会连接到数据库。
给出的错误是
找不到请求的 .Net Framework 数据提供程序。它可能没有安装 块引用
技术信息:
- Mysql 5.0
- C#
- 点网框架 2.0
- Mysql 连接器 6.3.6(6.0.3 版本的 sql 连接器出现同样的问题)
- 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# 中为桌面环境中的客户端服务器应用程序做同样的事情。
【问题讨论】:
-
你的桌面应用的
app.config是否也放入了同样的配置? -
我们没有在 app.config 中放置相同的配置。标签 DBProviderFactories 在 app.config 中似乎无效
-
这个问题在一个月前可以让我省去几个小时的头痛。所有 .Net 连接器安装(据我了解)是将“MySQL 数据提供程序”条目添加到 machine.config。我没有使用安装程序,只是将条目添加到我的配置中。我使用 .Net ProviderFactories 关闭并运行。
标签: c# mysql database-connection mysql-connector