.NET与MySQL数据库交互的艺术探索,智慧连接,数据之美尽显指尖

文章导读
using MySql.Data.MySqlClient; string connectionString = "server=localhost;database=testdb;uid=root;pwd=password;"; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); s
📋 目录
  1. 安装MySQL Connector/NET
  2. 连接字符串配置
  3. 执行查询操作
  4. 使用Dapper简化交互
  5. Entity Framework Core集成
  6. 异步操作示例
  7. 事务处理
A A

using MySql.Data.MySqlClient; string connectionString = "server=localhost;database=testdb;uid=root;pwd=password;"; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM users"; using (MySqlCommand cmd = new MySqlCommand(sql, conn)) { using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["name"].ToString()); } } } }

安装MySQL Connector/NET

首先,通过NuGet包管理器安装MySQL Connector/NET:在Visual Studio中,右键项目 -> 管理NuGet程序包,搜索MySql.Data并安装。这样就能在.NET项目中使用MySQL的连接功能了。

连接字符串配置

连接字符串是关键,典型格式:"Server=localhost;Database=mydb;Uid=username;Pwd=password;Charset=utf8;"。记得根据实际情况替换参数,确保防火墙允许3306端口访问。

执行查询操作

MySqlCommand cmd = new MySqlCommand("INSERT INTO table (col1, col2) VALUES (@val1, @val2)", conn); cmd.Parameters.AddWithValue("@val1", value1); cmd.Parameters.AddWithValue("@val2", value2); int rows = cmd.ExecuteNonQuery();

使用Dapper简化交互

安装Dapper后:using Dapper; var users = conn.Query<User>("SELECT * FROM users WHERE id = @id", new { id = 1 }); 这样一行代码就能映射数据到对象,超级方便。

.NET与MySQL数据库交互的艺术探索,智慧连接,数据之美尽显指尖

Entity Framework Core集成

在appsettings.json中添加连接字符串,然后DbContext类继承DbContext,配置OnConfiguring方法:options.UseMySQL(connectionString); 迁移命令dotnet ef migrations add InitialCreate。

异步操作示例

await conn.OpenAsync(); var task = cmd.ExecuteReaderAsync(); while (await reader.ReadAsync()) { // 处理数据 }

事务处理

using (var transaction = conn.BeginTransaction()) { try { cmd.Transaction = transaction; cmd.ExecuteNonQuery(); transaction.Commit(); } catch { transaction.Rollback(); } }

FAQ
Q: 如何处理连接超时?
A: 在连接字符串中添加ConnectionTimeout=30;CommandTimeout=60;
Q: 中文乱码怎么解决?
A: 连接字符串加Charset=utf8mb4; 数据库表也设为utf8mb4;
Q: 批量插入怎么高效?
A: 用MySqlBulkLoader或Dapper的Execute批量方法;
Q: 连接池怎么用?
A: 默认开启,设置Pooling=true;MinimumPoolSize=1;MaximumPoolSize=100;