C# SqlSugar框架的学习使用(五)-- 更新和删除数据的详细用法
前言
上一篇《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框架的学习使用(五)-- 更新和删除数据的详细用法相关推荐
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
- 《MySQL必知必会学习笔记》:更新和删除数据
更新和删除数据 上篇博文介绍了下插入数据的几种方式.这篇博文就来讲述下更新和删除数据. 更新数据 更新(修改)表中的数据,使用update语句. 更新数据一般采用如下两种方式: 更新表中特定行的数据. ...
- ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据
添加.更新与删除数据 1.添加数据 命令格式: INSERT|replace INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--), (值1,值2,--); 需要注意:使用in ...
- mysql插入第一_mySQL教程 第5章 插入 更新与删除数据
第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...
- php+mysqli实现批量执行插入、更新及删除数据的方法
本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只 ...
- mySQL教程 第5章 插入 更新与删除数据
第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...
- 使用 SqlDataSource 插入、更新和删除数据49
简介 正如在 数据插入.更新和删除概述 中讨论的那样,GridView 控件提供内置的更新和删除功能,而DetailsView 和 FormView 控件则包含对插入.编辑和删除功能的支持.这些数据修 ...
- SQL 必知必会·笔记14更新和删除数据
1. 更新数据 基本的UPDATE语句,由三部分组成: 要更新的表 列名和它们的新值 确定要更新那些行的过滤条件 更新单列示例: 1 UPDATE Customers 2 SET cust_email ...
- MySQL添加、更新、删除数据
MySQL添加.更新.删除数据 1.查询数据 select * from student; 2.添加数据 insert into student values(1,"张三",&qu ...
最新文章
- SQL Server中遍历表中记录的方法
- IntelliJ IDEA使用记录
- “200亿先生”沈腾加持,BOSS直聘能让中国人找到好老板吗?
- Python OS模块使用汇总
- C语言煎饼排序Pancake sort算法(附完整源码)
- How to create a Python dictionary with double quotes as default quote format?
- mysql5.7.23手动配置安装windows版
- Wordpress 与 Sphere 结为合作伙伴
- node 连接mysql 中间件_如何在node.js里连接和使用mysql
- 金融系列-支付清结算之基本概念和入门
- C++:缺省参数是怎样设置的?
- COOC一款用于文献计量和知识图谱绘制的新软件
- 一元三次方程求解(枚举)
- laravel view 教程
- npm中node更新_如何在Node中管理NPM和功能时保持理智
- ABP领域层——实体
- 无法获得递归Range.Find在Word VBA中工作
- 没有域名备案可以安装ssl证书吗?应用IP申请ssl证书的注意事项
- 【观察】助力5G云边协同应用落地,烽火通信的突破与创新
- android软件工程师/android中间件开发
热门文章
- 送给前线码农的话 – 大牛们的经典语录---摘抄了不少经典的好词好段,虽是只言片语,但都是心得。(转)...
- H - Lift Hopping UVA - 10801
- linux网卡命名规则变为eno分析?
- 【验证码逆向专栏】某验“初代”滑块验证码逆向分析
- Coherence企业级缓存特点
- 转载:震撼!广告公司泄漏出来的腾讯窥私计划
- 程序员的我们天天写日、周、月、年报,到底有什么用途?又不看!!!
- 蚂蚁金服被约谈,杠杆不合理
- 电影票之后百度如何建立O2O城池?
- 《过去的日子我们这样娱乐过7.0》