1. C#连接MySQL的核心价值与应用场景
作为.NET生态中最常用的数据库组合之一,C#与MySQL的对接在中小型应用开发中占据重要地位。不同于SQL Server的官方绑定方案,MySQL连接需要额外配置驱动组件,这种轻量级组合特别适合需要跨平台部署的桌面程序、Web API服务以及工业控制领域的上位机开发。
在实际项目中,我遇到过不少开发者卡在基础连接配置环节。比如最近一个温控系统上位机项目,团队花了三天时间排查连接超时问题,最后发现只是端口号配置错误。本文将系统梳理从驱动选择到高效查询的全流程,重点分享那些官方文档不会告诉你的实战经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与驱动选型
2.1 MySQL服务端配置要点
在连接数据库前,建议使用MySQL Workbench完成以下基础配置:
- 创建专用连接账号(避免使用root)
sql复制CREATE USER 'csharp_user'@'%' IDENTIFIED BY 'SecurePwd123!'; GRANT ALL PRIVILEGES ON target_db.* TO 'csharp_user'@'%'; - 确认服务监听端口(默认3306)
bash复制# Linux/Mac netstat -tuln | grep mysql # Windows netstat -ano | findstr 3306
特别注意:云服务器需配置安全组规则放行3306端口,这是90%连接失败的根源
2.2 Connector/NET驱动安装
官方MySQL Connector/NET提供两种集成方式:
- NuGet安装(推荐):
powershell复制Install-Package MySql.Data -Version 8.0.33 - 手动下载DLL:
从Oracle官网获取对应.NET版本的驱动包,需特别注意:- .NET Framework 4.x 选择6.x系列驱动
- .NET Core/5+ 必须使用8.x系列
实测发现,使用NuGet自动安装可避免90%的依赖冲突问题。曾有个项目因手动引用了错误版本的MySql.Data.EntityFrameworkCore导致事务失效,改用NuGet后问题消失。
3. 基础连接与异常处理
3.1 连接字符串最佳实践
标准连接字符串应包含这些核心参数:
csharp复制string connStr = "server=127.0.0.1;port=3306;database=test_db;user=csharp_user;password=SecurePwd123!;CharSet=utf8mb4;ConnectionTimeout=15;Pooling=true;MaxPoolSize=100;";
关键参数说明:
CharSet=utf8mb4:支持完整Unicode字符(包括emoji)ConnectionTimeout:建议15-30秒,工业现场可适当延长Pooling:连接池能提升高频访问性能
3.2 健壮性连接方案
建议使用using语句确保资源释放:
csharp复制using (MySqlConnection conn = new MySqlConnection(connStr))
{
try
{
conn.Open();
// 业务代码
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
Console.WriteLine("用户名/密码错误");
break;
case 1045:
Console.WriteLine("权限不足");
break;
case 1042:
Console.WriteLine("服务器不可达");
break;
default:
Console.WriteLin
