当前位置: 首页 > news >正文

C# winform 三层架构增删改查,(删除篇)

一.留言

C# wnform 三层架构增删改查,本篇是增删改查是删除篇,也就增删改查外加一个登录更新完,后续考虑出一个增删改查就是不用三层架构,在uI里面 直接写完,并且放一个帮助类,基本十分钟可以写完一套增删改查,这种适合联系或者熟悉一下流程后续可以关注一下。

二.删除

那么删除,我们是通过UI显示的数据进行删除,所以我们只需要在UI显示界面里添加一个删除按钮就可以了如图:

那么,我们就先看DAL里面写什么:

  /// <summary>/// 删除/// </summary>/// <param name="id"></param>/// <returns></returns>public bool DeleteMessage(int id){using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string query = "DELETE FROM messaage WHERE Id = @Id";using (SqlCommand command = new SqlCommand(query, connection)){command.Parameters.AddWithValue("@Id", id);int rowsAffected = command.ExecuteNonQuery();return rowsAffected > 0;}}}

在DAL里面通过查询ID去删除,为什么要通过ID去删除呢?而不是通过表里的比如食物等字段删除,因为ID是不重复的,但是食物,名称会重复,比如说我想删除一个食物可能查询出来很多相同的食物,那么就会删除很多条数据,所以我们先查询到ID,然后传值ID

下面是BLL接收值给UI

/// <summary>/// 删除/// </summary>/// <param name="id"></param>/// <returns></returns>public bool DeleteMessage(int id){return loginDal.DeleteMessage(id);}

然后ui接收

  private void button2_Click(object sender, EventArgs e){DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];int id = (int)selectedRow.Cells["Id"].Value;bool isDeleted = loginBll.DeleteMessage(id);if (isDeleted){MessageBox.Show("删除成功");EssShow();}else{MessageBox.Show("Failed to delete message.");}}

我们只需要获取到我们想删除的数据,然后调用一下bll就可以了那么删除后,提示删除成功,但是页面不会变,需要在次执行,删除的数据才会消失,这是为什么呢,因为我们先查询,直接显示出了数据,然后删除后没有查询,所以数据不变,要再次执行后才能显示最新数据,所以我们可以删除成功后再次查询一遍,但是我们不用再去写一遍dal  bll,我们之前不是写过显示数据,名称叫EssShow,我们只需要把这个方法调用过来就可以了,放在删除成功下面,效果图展示

点击确定后更新数据:

需要源码联系免费的

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python面试宝典第32题:课程表
  • cmake+ninja交叉编译android下的静态库
  • Elasticsearch 基本搜索
  • AI大模型开发——2.深度学习基础(1)
  • HCIP第七章(BGP拓展知识)
  • HCIP第六章(BGP)
  • 【Linux学习】动静态库从原理到制作
  • 【Java数据结构】---List(ArrayList)
  • STM32的USB接口介绍
  • vue前端自适应布局,一步到位所有自适应
  • 【vulnhub】WebDeveloper:1靶机
  • Linux下如何使用Netcat进行网络调试
  • 网络剪枝——network-slimming 项目复现
  • 剖析HTML 元素——WEB开发系列02
  • Excutors创建线程池
  • #Java异常处理
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • go语言学习初探(一)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Swift 中的尾递归和蹦床
  • 高度不固定时垂直居中
  • 来,膜拜下android roadmap,强大的执行力
  • 排序算法学习笔记
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 算法---两个栈实现一个队列
  • 以太坊客户端Geth命令参数详解
  • 因为阿里,他们成了“杭漂”
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • puppet连载22:define用法
  • 从如何停掉 Promise 链说起
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • #Lua:Lua调用C++生成的DLL库
  • %check_box% in rails :coditions={:has_many , :through}
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (十七)Flink 容错机制
  • (实战篇)如何缓存数据
  • (四)opengl函数加载和错误处理
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (状压dp)uva 10817 Headmaster's Headache
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET多线程执行函数
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .pop ----remove 删除
  • @Async 异步注解使用
  • @javax.ws.rs Webservice注解
  • [ JavaScript ] JSON方法
  • [2016.7 test.5] T1
  • [20190113]四校联考