前言

上一篇《C# SqlSugar框架的学习使用(四)-- 插入数据的详细用法》我们已经把SqlSugar的插入多种用法实现了,这篇我们就来说说更新数据和删除数据的多种用法。我们就用上一篇的数据表POSTemp进行操作。

更新和删除里面大部分用法与插入的方式差不多,所以我们这里不全部举例了,把一些不同的重点做一下。

数据更新

SqlSugar更新分为2大类写法,1种是传实体对象的方式 这种是以实体对象为核心进行更新,不传实体对象这种是以表达式为核心进行更新

//传实体对象写法(支持批量对象)
db.Updateable(updateObj) //不传实体对象写法
db.Updateable<T>()

传对象的用法


根据实体更新(主键要有值,主键是更新条件)

加入按钮

       private void tsmnuupdatecls_Click(object sender, EventArgs e){try{POSTemp pos = _db.Queryable<POSTemp>().Where(t => t.Posno == "0001").First();pos.OrgCode = "002";pos.status = "0";int count = _db.Updateable(pos).ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}


传入对象根据条件更新

        private void tsmnuupdatewhere_Click(object sender, EventArgs e){try{POSTemp pos = _db.Queryable<POSTemp>().Where(t => t.Posno == "0002").First();pos.OrgCode = "003";pos.status = "2";int count = _db.Updateable(pos).UpdateColumns(p=>new {p.OrgCode,p.status,p.Posno}).WhereColumns(t=>new {t.Posno}).ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}

其余的用法与插入类似,就不再全部举例了。

不传对象的用法

//正确写法var t10 = db.Updateable<Student>()
.UpdateColumns(it => new Student() { Name = "a", CreateTime = DateTime.Now })
.Where(it => it.Id == 11).ExecuteCommand();//错误写法
var st=new Student() { Name = "a", CreateTime = DateTime.Now };
var t10 = db.Updateable<Student>()
.UpdateColumns(it => st)
.Where(it => it.Id == 11).ExecuteCommand();

        private void tsbtnupdatenotcls_Click(object sender, EventArgs e){try{int count = _db.Updateable<POSTemp>()              .SetColumns(p => new POSTemp(){status = "3"}).Where(t => t.OrgCode=="001").ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}


联表更新

        private void tsmnuupdateunion_Click(object sender, EventArgs e){try{int count = _db.Updateable<POSTemp>().SetColumns(p => new POSTemp(){status = SqlFunc.Subqueryable<POS>().Where(x=>x.Posno==p.Posno).Select(x=>x.status)}).Where(t => t.OrgCode == "003").ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}


根据不同条件执行更新不同的列

        private void tsmnuupdatecasewhere_Click(object sender, EventArgs e){try{POSTemp pos = _db.Queryable<POSTemp>().Where(t => t.Posno == "0001").First();int count = _db.Updateable(pos).SetColumnsIF(pos.status == "0", t =>new POSTemp() {status = "5"}).SetColumnsIF(pos.status == "5", t =>new POSTemp() {status = "9"}).ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}

我们看看点击执行两次的结果


保存或者插入

该功能是根据主键判断是否存在,如果存在则更新,不存在则插入,支持批量操作。

这里也是只演示基本操作,后面的详细操作和插入及更新一样。

        private void tsmnusave_Click(object sender, EventArgs e){try{POSTemp pos = new POSTemp();pos.Posno = "0015";pos.Posname = "15款台";pos.OrgCode = "001";pos.status = "1";int count = _db.Saveable(pos).ExecuteCommand();TextShow("更新了" + count + "条数据");pos.Posname = "15款台1";count = _db.Saveable(pos).ExecuteCommand();TextShow("更新了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}

上面代码中我们执行了两次,在第二次执行的时候我们把名称修改了一下,看看输入的语句


数据删除

根据实体删除

        private void tsmnudeletecls_Click(object sender, EventArgs e){try{POSTemp pos = new POSTemp();pos.sn = 16;pos.Posno = "0015";pos.Posname = "15款台";pos.OrgCode = "001";pos.status = "1";int count = _db.Deleteable(pos).ExecuteCommand();TextShow("删除了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}


根据表达式删除

我们这次先试试删除为Posno是0014的数据

然后再删除status为3和9的数据

        private void tsmnudeletewhere_Click(object sender, EventArgs e){try{int count = _db.Deleteable<POSTemp>().Where(t=>t.Posno=="0014").ExecuteCommand();TextShow("删除了" + count + "条数据");//删除status为3和9的数据List<string> statList=new List<string>();statList.Add("3");statList.Add("9");count = _db.Deleteable<POSTemp>().Where(t => statList.Contains(t.status)).ExecuteCommand();TextShow("删除了" + count + "条数据");}catch (Exception ex){TextShow(ex.Message);}}

-END-

Vaccae的往期经典


OpenCV

《C++ OpenCV案例实战---卡号获取》

《C++ OpenCV案例实战---卡片截取(附代码)》

《C++ OpenCV透视变换---切换手机正面图片》

《C++ OpenCV实战---获取数量》

《C++ OpenCV实战---利用颜色分割获取数量》

《OpenCV4Android NDK方式进行Canny边缘检测》

《OpenCV4Android NDK方式TesserartOCR实时进行识别》

《OpenCV4Android NDK级联方式实时进行人脸检测》


Android

《Android利用SurfaceView结合科大讯飞修改语音实别UI》

《Android关于语音识别的功能实现分析(一)---结构化思维》

《Android关于语音识别的功能实现分析(二)---语义解析》

《Android根据类生成签名字符串》

《Android碎片化布局fragment的实战应用》

《Android中RecyclerView嵌套RecyclerView》

《Android里用AsyncTask后的接口回调》


.Net C#

《C#自定义特性(Attribute)讲解与实际应用》

《C#根据类生成签名字符串(附DEMO下载地址)》

《C++创建动态库C#调用》

《C#与三菱PLC(型号FX2N)串口通讯类》


数据库及其它

《Oracel存储过程写报表实战》

《Delphi轮播视频和图片程序(用于双屏显示程序)》

《SQL随机增加销售数据的脚本编写(附脚本下载地址)》

《SQL Server中With As的介绍与应用(三)--递归的实战应用》

《Oracle通过ODBC连接SQL Server数据库》

《Oracle利用row_number()over()方式解决插入数据时重复键的问题》


长按下方二维码关注微卡智享

C# SqlSugar框架的学习使用(五)-- 更新和删除数据的详细用法相关推荐

  1. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  2. 《MySQL必知必会学习笔记》:更新和删除数据

    更新和删除数据 上篇博文介绍了下插入数据的几种方式.这篇博文就来讲述下更新和删除数据. 更新数据 更新(修改)表中的数据,使用update语句. 更新数据一般采用如下两种方式: 更新表中特定行的数据. ...

  3. ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据

    添加.更新与删除数据 1.添加数据 命令格式: INSERT|replace INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--), (值1,值2,--); 需要注意:使用in ...

  4. mysql插入第一_mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  5. php+mysqli实现批量执行插入、更新及删除数据的方法

    本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只 ...

  6. mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  7. 使用 SqlDataSource 插入、更新和删除数据49

    简介 正如在 数据插入.更新和删除概述 中讨论的那样,GridView 控件提供内置的更新和删除功能,而DetailsView 和 FormView 控件则包含对插入.编辑和删除功能的支持.这些数据修 ...

  8. SQL 必知必会·笔记14更新和删除数据

    1. 更新数据 基本的UPDATE语句,由三部分组成: 要更新的表 列名和它们的新值 确定要更新那些行的过滤条件 更新单列示例: 1 UPDATE Customers 2 SET cust_email ...

  9. MySQL添加、更新、删除数据

    MySQL添加.更新.删除数据 1.查询数据 select * from student; 2.添加数据 insert into student values(1,"张三",&qu ...

最新文章

  1. SQL Server中遍历表中记录的方法
  2. IntelliJ IDEA使用记录
  3. “200亿先生”沈腾加持,BOSS直聘能让中国人找到好老板吗?
  4. Python OS模块使用汇总
  5. C语言煎饼排序Pancake sort算法(附完整源码)
  6. How to create a Python dictionary with double quotes as default quote format?
  7. mysql5.7.23手动配置安装windows版
  8. Wordpress 与 Sphere 结为合作伙伴
  9. node 连接mysql 中间件_如何在node.js里连接和使用mysql
  10. 金融系列-支付清结算之基本概念和入门
  11. C++:缺省参数是怎样设置的?
  12. COOC一款用于文献计量和知识图谱绘制的新软件
  13. 一元三次方程求解(枚举)
  14. laravel view 教程
  15. npm中node更新_如何在Node中管理NPM和功能时保持理智
  16. ABP领域层——实体
  17. 无法获得递归Range.Find在Word VBA中工作
  18. 没有域名备案可以安装ssl证书吗?应用IP申请ssl证书的注意事项
  19. 【观察】助力5G云边协同应用落地,烽火通信的突破与创新
  20. android软件工程师/android中间件开发

热门文章

  1. 送给前线码农的话 – 大牛们的经典语录---摘抄了不少经典的好词好段,虽是只言片语,但都是心得。(转)...
  2. H - Lift Hopping UVA - 10801
  3. linux网卡命名规则变为eno分析?
  4. 【验证码逆向专栏】某验“初代”滑块验证码逆向分析
  5. Coherence企业级缓存特点
  6. 转载:震撼!广告公司泄漏出来的腾讯窥私计划
  7. 程序员的我们天天写日、周、月、年报,到底有什么用途?又不看!!!
  8. 蚂蚁金服被约谈,杠杆不合理
  9. 电影票之后百度如何建立O2O城池?
  10. 《过去的日子我们这样娱乐过7.0》