【C#桌面客户端系列学习-4】封装数据库基础操作工具类(CURD)
目录一、安装MySQL驱动二、数据库连接配置三、数据库工具类封装1、创建MySqlHelper类2、验证创建成功四、CURD操作示例一、安装MySQL驱动在VS2022中右键项目 → 管理 NuGet 程序包搜索并安装“MySql.Data”这是MySQL官方的ADO.NET驱动安装后就可以直接使用了。二、数据库连接配置在app.config的configuration节点内添加数据库配置信息。connectionStrings add nameMyDbConn connectionStringServerlocalhost;Port3306;Database你的数据库名;Uid你的用户名;Pwd你的密码; providerNameMySql.Data.MySqlClient / /connectionStrings字段说明ServerMySQL服务器地址Port数据库连接端口默认是3306Database要连接的数据库名Uid/PwdMySQL的用户名和密码注意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, zhangsanexample.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, newzhangsanexample.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

相关新闻

xLua 测试体系实战指南:单元测试、性能基准设计与 LuaJIT 对比

xLua 测试体系实战指南:单元测试、性能基准设计与 LuaJIT 对比

游戏开发脚本语言集成 【免费下载链接】xLua xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 项目地址: https://gitcode.com/gh_mirrors/xl/xLua 点击查看 免费下载 本篇指南围绕 xLua …

2026/9/24 14:36:55 阅读更多 →
Relay 19 的 @catch 指令实战指南:将字段级错误处理从“隐式 null“升级为“显式数据“

Relay 19 的 @catch 指令实战指南:将字段级错误处理从“隐式 null“升级为“显式数据“

前端开发工具 【免费下载链接】relay Relay is a JavaScript framework for building data-driven React applications. 项目地址: https://gitcode.com/gh_mirrors/relay29/relay 点击查看 免费下载 本篇技术指南围绕 Relay 的 catch 指令展开,讲解如何…

2026/9/24 14:36:55 阅读更多 →
EMQX MQTT 连接器与集群链路服务器地址解析增强:IPv6 直连支持与 mqtt/mqtts URI Scheme

EMQX MQTT 连接器与集群链路服务器地址解析增强:IPv6 直连支持与 mqtt/mqtts URI Scheme

后端物联网消息队列通信 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx 点击查看 免费下载 导读 本篇文章围绕 EMQX 开源仓库中的变更记录 chan…

2026/9/24 14:36:55 阅读更多 →

最新新闻

基于图像识别的跨平台 UI 自动化框架:Airtest 安装、Python API 与 CLI 实战指南

基于图像识别的跨平台 UI 自动化框架:Airtest 安装、Python API 与 CLI 实战指南

测试质量保障计算机视觉 【免费下载链接】Airtest UI Automation Framework for Games and Apps 项目地址: https://gitcode.com/gh_mirrors/ai/Airtest 点击查看 免费下载 Airtest 是网易开源的跨平台 UI 自动化框架,专为游戏和 App 设计,核…

2026/9/24 15:57:07 阅读更多 →
Docker之镜像、容器、数据卷关系

Docker之镜像、容器、数据卷关系

Docker之镜像、容器、数据卷关系一个 Image(镜像)可以创建多个 Container(容器);Container 挂载 Volume(数据卷)后,数据可以在删除旧容器、创建新容器后继续使用。概念含义类比Image…

2026/9/24 15:57:07 阅读更多 →
LX Music 桌面版免费多源音乐搜索下载完整指南

LX Music 桌面版免费多源音乐搜索下载完整指南

LX Music 桌面版免费多源音乐搜索下载完整指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 凌晨一点,想找一首歌的完整版,你翻遍了三个音乐 App&#x…

2026/9/24 15:57:07 阅读更多 →
Humanizer ByteSizeExtensions 完全指南:.NET 字节与位单位转换、人性化格式化与速率计算的扩展方法全景

Humanizer ByteSizeExtensions 完全指南:.NET 字节与位单位转换、人性化格式化与速率计算的扩展方法全景

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 本篇技…

2026/9/24 15:57:07 阅读更多 →
ParlAI 对话安全实战:基于 Build it Break it Fix it 对抗式训练的冒犯语言检测

ParlAI 对话安全实战:基于 Build it Break it Fix it 对抗式训练的冒犯语言检测

ParlAI 对话安全实战:基于 Build it Break it Fix it 对抗式训练的冒犯语言检测 【免费下载链接】ParlAI A framework for training and evaluating AI models on a variety of openly available dialogue datasets. 项目地址: https://gitcode.com/gh_mirrors/pa…

2026/9/24 15:57:07 阅读更多 →
Python新闻网站项目-4.数据处理和算法应用

Python新闻网站项目-4.数据处理和算法应用

基于Python、Scrapy、Gerapy、NLP以及Django框架构建的新闻采集与展示系统,旨在实现自动化新闻抓取、处理、展示和管理的一体化解决方案。本项目结合了爬虫技术、分布式部署、数据处理、前后端展示以及内容管理系统的构建,最终形成一个功能全面、用户友好的新闻网站。该系统不…

2026/9/24 15:56:06 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →