news 2026/9/24 14:37:35

【C#桌面客户端系列学习-4】封装数据库基础操作工具类(CURD)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C#桌面客户端系列学习-4】封装数据库基础操作工具类(CURD)

目录

一、安装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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 14:31:30

Docker实战 | 使用Docker部署OtterWiki知识管理工具

【Docker项目实战】使用Docker部署OtterWiki知识管理工具一、OtterWiki介绍1.1 OtterWiki项目简介1.2 OtterWiki主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取Otter…

作者头像 李华
网站建设 2026/9/24 14:28:48

WinUtil:装软件做优化修系统,一个窗口搞定

WinUtil&#xff1a;装软件做优化修系统&#xff0c;一个窗口搞定 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 新机装系统那天&#xff0c…

作者头像 李华
网站建设 2026/9/24 14:26:13

Jackett错误报告系统:用户反馈与自动提交

Jackett错误报告系统&#xff1a;用户反馈与自动提交 在使用Jackett的过程中&#xff0c;用户可能会遇到各种错误和问题。Jackett提供了完善的错误报告系统&#xff0c;帮助用户收集、分析和提交错误信息&#xff0c;以便开发团队及时解决问题。本文将详细介绍Jackett错误报告…

作者头像 李华