最常用、官方推荐的方式是使用 MySql.Data 官方驱动,通过安装 NuGet 包、构造连接字符串、用 MySqlConnection 等类操作数据库,并注意异常处理与安全配置。

用 C# 连接 MySQL 数据库,最常用、官方推荐的方式是使用 MySql.Data 官方驱动(由 Oracle 维护)。它支持 .NET Framework 和 .NET Core/.NET 5+(需对应版本),通过 MySqlConnection、MySqlCommand 等类操作数据库。
安装 MySql.Data 包
在项目中引入驱动是第一步。推荐使用 NuGet 包管理器:
- Visual Studio 中:右键项目 → “管理 NuGet 包” → 搜索 MySql.Data → 安装最新稳定版(如 8.3.x)
- 命令行(.NET CLI):
dotnet add package MySql.Data - 注意:.NET 6/7/8 项目请确认安装的是支持该目标框架的版本(新版 MySql.Data 已全面支持 .NET Standard 2.0+ 和 .NET 5+)
编写连接字符串
连接字符串包含服务器地址、端口、数据库名、用户名、密码等关键信息。格式如下:
Server=localhost;Port=3306;Database=testdb;Uid=root;Pwd=your_password;- Server:MySQL 服务地址(可为 localhost、127.0.0.1 或远程 IP)
- Port:默认 3306,若修改过需同步填写
- Database:要连接的具体数据库名(可为空,后续再选库)
- Uid / Pwd:用户名和密码(建议开发时用专用账号,生产环境避免硬编码)
- 安全提示:密码勿写死在代码里,推荐用配置文件(appsettings.json)或环境变量加载
执行简单查询示例
以下是一个完整的控制台小例子,连接后查询一条数据:
using MySql.Data.MySqlClient;string connStr = "Server=localhost;Port=3306;Database=testdb;Uid=root;Pwd=123456;"; using (var conn = new MySqlConnection(connStr)) { try { conn.Open(); Console.WriteLine("✅ 连接成功");
using (var cmd = new MySqlCommand("SELECT VERSION(), DATABASE();", conn)) { var result = cmd.ExecuteScalar(); Console.WriteLine($"MySQL 版本与当前库:{result}"); } } catch (MySqlException ex) { Console.WriteLine($"❌ 数据库错误:{ex.Message}"); }}
- 务必用
using确保连接和命令对象被正确释放 -
ExecuteScalar()适合查单值;ExecuteReader()用于多行结果;ExecuteNonQuery()用于增删改 - 异常类型优先捕获
MySqlException,便于针对性处理连接失败、SQL 错误等
常见问题与注意点
-
“Unable to connect to any of the specified MySQL hosts”:检查 MySQL 是否运行、防火墙是否放行、用户是否授权远程访问(
CREATE USER 'user'@'%' IDENTIFIED BY 'pwd'; GRANT ALL ON *.* TO 'user'@'%'; FLUSH PRIVILEGES;) -
字符集乱码:在连接字符串末尾加
;Charset=utf8mb4;(推荐),并确保数据库/表也设为 utf8mb4 -
SSL 连接拒绝:开发环境可加
;SslMode=none;临时绕过(生产环境应配置合法证书) - 不建议长期持有
MySqlConnection实例,按需创建、及时释放——连接池已由驱动自动管理
基本上就这些。只要包装对、字符串准、异常兜住,C# 连 MySQL 很稳。实际项目中再配合 Dapper 或 Entity Framework Core 会更高效,但底层仍是 MySql.Data 在工作。











