目录
一、安装MySQL驱动
二、数据库连接配置
三、数据库工具类封装
1、创建MySqlHelper类
2、验证创建成功
四、CURD操作示例
一、安装MySQL驱动
在VS2022中,右键项目 → 管理 NuGet 程序包,搜索并安装“MySql.Data”,这是MySQL官方的ADO.NET驱动,安装后就可以直接使用了。
二、数据库连接配置
在app.config的<configuration>节点内添加数据库配置信息。
<connectionStrings> <add name="MyDbConn" connectionString="Server=localhost;Port=3306;Database=你的数据库名;Uid=你的用户名;Pwd=你的密码;" providerName="MySql.Data.MySqlClient" /> </connectionStrings>字段说明
Server:MySQL服务器地址
Port:数据库连接端口,默认是3306
Database:要连接的数据库名
Uid/Pwd:MySQL的用户名和密码
注意:providerName必须是MySql.Data.MySqlClient,少了这个配置管理器可能读不到。
三、数据库工具类封装
MySqlHelper工具类是一个静态工具类,直接创建一个普通的C#类文件就行。
创建步骤:在解决方案资源管理器中,右键你的项目 →添加→类。命名MySqlHelper.cs
这里我没有写命名空间,因为不写命名空间这样它就在全局命名空间下,在任何窗体里可以直接使用MySqlHelper类,不用额外再using。
1、创建MySqlHelper类
using System; using System.Configuration; using System.Data; using MySql.Data.MySqlClient; // 数据库工具类 public static class MySqlHelper { // 从 App.config 读取连接字符串 private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MyDbConn"].ConnectionString; /// <summary> /// 获取一个新的数据库连接(调用方负责释放) /// </summary> public static MySqlConnection GetConnection() { return new MySqlConnection(connectionString); } /// <summary> /// 执行增删改,返回受影响的行数 /// </summary> public static int ExecuteNonQuery(string sql, params MySqlParameter[] parameters) { using (var connection = GetConnection()) { connection.Open(); using (var command = new MySqlCommand(sql, connection)) { if (parameters != null) command.Parameters.AddRange(parameters); return command.ExecuteNonQuery(); } } } /// <summary> /// 执行查询,返回 DataTable /// </summary> public static DataTable ExecuteDataTable(string sql, params MySqlParameter[] parameters) { using (var connection = GetConnection()) { connection.Open(); using (var command = new MySqlCommand(sql, connection)) { if (parameters != null) command.Parameters.AddRange(parameters); var adapter = new MySqlDataAdapter(command); var dataTable = new DataTable(); adapter.Fill(dataTable); return dataTable; } } } /// <summary> /// 执行查询,返回第一行第一列(适合 COUNT、SUM、单个字段) /// </summary> public static object ExecuteScalar(string sql, params MySqlParameter[] parameters) { using (var connection = GetConnection()) { connection.Open(); using (var command = new MySqlCommand(sql, connection)) { if (parameters != null) command.Parameters.AddRange(parameters); return command.ExecuteScalar(); } } } /// <summary> /// 测试数据库连接是否可用 /// </summary> public static bool TestConnection() { try { using (var connection = GetConnection()) { connection.Open(); return true; } } catch { return false; } } }2、验证创建成功
在任一窗体的按钮事件里写一行测试代码
bool ok = MySqlHelper.TestConnection(); MessageBox.Show(ok ? "数据库连接正常" : "数据库连接失败");如果弹出“数据库连接正常”,说明类创建成功,并且数据库也连接成功了。
四、CURD操作示例
using System; using System.Data; using MySql.Data.MySqlClient; class Program { static void Main(string[] args) { // 1. 查询示例 Console.WriteLine("查询所有用户:"); var querySql = "SELECT * FROM users"; var users = MySqlHelper.ExecuteDataTable(querySql); foreach (DataRow row in users.Rows) { Console.WriteLine($"ID: {row["id"]}, Name: {row["name"]}, Email: {row["email"]}"); } // 2. 插入示例(参数化查询防止SQL注入) Console.WriteLine("\n插入新用户:"); var insertSql = "INSERT INTO users(name, email, created_at) VALUES(@name, @email, @createdAt)"; var insertParams = new MySqlParameter[] { new MySqlParameter("@name", "张三"), new MySqlParameter("@email", "zhangsan@example.com"), new MySqlParameter("@createdAt", DateTime.Now) }; int affectedRows = MySqlHelper.ExecuteNonQuery(insertSql, insertParams); Console.WriteLine($"插入成功,影响行数: {affectedRows}"); // 3. 更新示例 Console.WriteLine("\n更新用户邮箱:"); var updateSql = "UPDATE users SET email = @newEmail WHERE name = @name"; var updateParams = new MySqlParameter[] { new MySqlParameter("@newEmail", "newzhangsan@example.com"), new MySqlParameter("@name", "张三") }; affectedRows = MySqlHelper.ExecuteNonQuery(updateSql, updateParams); Console.WriteLine($"更新成功,影响行数: {affectedRows}"); // 4. 删除示例 Console.WriteLine("\n删除用户:"); var deleteSql = "DELETE FROM users WHERE name = @name"; var deleteParam = new MySqlParameter("@name", "张三"); affectedRows = MySqlHelper.ExecuteNonQuery(deleteSql, deleteParam); Console.WriteLine($"删除成功,影响行数: {affectedRows}"); } }C#桌面客户端系列学习可浏览专题学习https://blog.csdn.net/qq_25285531/category_13213077.htmlhttps://blog.csdn.net/qq_25285531/category_13213077.html