关于mysql-connector-net在C#中的用法
mysql-connector-net-8.0.11.msi 可以从这里下载:mysql-connector-net-8.0.11
如果使用ado.net链接mysql数据库则只需要引用 MySql.Data.dll即可,并不需要安装mysql-connector-net驱动程序;
如果使用EF的话需要安装mysql-connector-net驱动程序和mysql-for-visualstudio 这个vs里面链接数据源的插件,否则EF无法使用VS视图模型的浏览和创建以及更新数据库实体;
其中mysql-connector-net驱动程序安装目录包含了
MySql.Data.dll;
MySql.Data.Entity.EF5.dll;
MySql.Data.Entity.EF6.dll;
MySql.Fabric.Plugin.dll;
MySql.Web.dll;
注意:就算把mysql-connector-net安装目录下所有的类库都拷到bin目录而不在应用站点服务器上安装mysql-connector-net驱动程序,EF代码还是会报错,因为mysql-connector-net安装不仅装了各种dll类库,还写过机器上.net环境的全局的machine.config里加过
<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=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>,
所以要使用EF必须在站点服务器安装mysql-connector-net启动程序(数据库所在的服务器不需要安装,只需要C#程序所运行的电脑需要安装)或者在应用的web.config文件里configuration节点下加上上面的配置
或者在应用所在机器的
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
文件里加上上面的配置。
需要注意的是:当机器已经装上了mysql-connector-net驱动的时候,再加这配置就会造成name重复而报错。
下面给出例子:
using System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
/*
本程序使用 MySql.Data.dll 链接Mysql数据库,读取服务器中所有数据库的名称,显示在界面上。HoverTree
*/
namespace MysqlHoverTree
{
public partial class Form1 : Form
{
private MySqlConnection _conn;
public Form1()
{
InitializeComponent();
}
private void button_connect_Click(object sender, EventArgs e)
{
if (_conn != null)
_conn.Close();
string h_connString = "server=localhost;user id=root; password=123456; port=3306; database=mysql; pooling=false; charset=utf8";//根据实际修改
try
{
_conn = new MySqlConnection(h_connString);
_conn.Open();
GetDatabases();
MessageBox.Show("连接数据库成功!");
}
catch (MySqlException ex)
{
MessageBox.Show("Error connecting to the server: " + ex.Message);
}
}
private void GetDatabases()
{
MySqlDataReader reader = null;
MySqlCommand cmd = new MySqlCommand("SHOW DATABASES", _conn);
try
{
reader = cmd.ExecuteReader();
listBox_database.Items.Clear();
while (reader.Read())
{
listBox_database.Items.Add(reader.GetString(0));
}
}
catch (MySqlException ex)
{
MessageBox.Show("Failed to populate database list: " + ex.Message);
}
finally
{
if (reader != null) reader.Close();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2017-08-29 JS字符串转换为JSON的四种方法笔记
2017-08-29 JS字符串转换为JSON的四种方法笔记
2017-08-29 JS字符串转换为JSON的四种方法笔记