推荐使用mysqlconnector连接mysql数据库,它开源跨平台、支持.net 5+、异步友好且无oracle依赖;需通过nuget安装,用参数化查询防注入,借助连接池自动复用连接。

用C#连接MySQL数据库,推荐使用 MySqlConnector(开源、跨平台、支持.NET 5/6/7/8、异步友好、无Oracle依赖),它比官方的 MySql.Data 更轻量、更现代。
1. 安装 MySqlConnector 包
在项目中通过 NuGet 安装:
- Visual Studio:右键项目 → “管理 NuGet 包” → 搜索 MySqlConnector → 安装
- 命令行(.NET CLI):
dotnet add package MySqlConnector
安装后无需额外配置,不依赖 MySQL 官方 Connector/NET 或本地 MySQL 安装。
2. 编写连接与查询代码
基本步骤:创建连接字符串 → 实例化 MySqlConnection → 打开连接 → 执行命令(查询或修改)→ 正确释放资源。
示例(同步查询):
string connectionString = "Server=localhost;Port=3306;Database=testdb;User ID=root;Password=123456;";
using var connection = new MySqlConnection(connectionString);
await connection.OpenAsync(); // 推荐用 async/await
<p>using var cmd = connection.CreateCommand();
cmd.CommandText = "SELECT Name, Age FROM users WHERE Age > @minAge";
cmd.Parameters.AddWithValue("@minAge", 18);</p><p>using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
string name = reader.GetString("Name");
int age = reader.GetInt32("Age");
Console.WriteLine($"{name}, {age}");
}注意点:
- 始终用 @参数名 防止 SQL 注入,不要拼接字符串
- 用
using确保连接、命令、读取器自动释放 - 优先使用
OpenAsync()、ExecuteReaderAsync()等异步方法
3. 常见连接字符串参数
基础格式:"Server=...;Port=...;Database=...;User ID=...;Password=...;"
常用可选参数:
-
SslMode=none:禁用 SSL(开发环境常用,生产建议用
Required) -
Allow User Variables=true:支持用户变量(如
@var:=1) - Connection Timeout=30:连接超时秒数(默认15)
- Maximum Pool Size=100:连接池最大连接数(按需调整)
本地测试完整示例:"Server=127.0.0.1;Port=3306;Database=myapp;User ID=appuser;Password=pass123;SslMode=None;"
4. 处理异常与连接复用
连接失败常见原因:服务未启动、账号密码错、防火墙拦截、权限不足。
建议做法:
- 用
try-catch(MySqlException ex)捕获数据库层异常 - 不要手动维护长连接;MySqlConnector 自带连接池,重复使用相同连接字符串即可高效复用
- 避免在类字段里存 MySqlConnection 实例;每次操作新建 connection 对象(轻量且线程安全)
连接池会自动管理打开/关闭,connection.Close() 或 Dispose() 实际只是归还到池中。
基本上就这些。MySqlConnector 上手快、文档清、问题少,是 C# 连 MySQL 的当前首选方案。










