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

前言

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

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

数据更新

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

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

传对象的用法


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

加入按钮

format,png

format,png

       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);
            }
        }

format,png

format,png


传入对象根据条件更新

format,png

        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);
            }
        }

format,png

format,png

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

不传对象的用法

//正确写法
 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();

format,png

        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);
            }
        }

format,png

format,png


联表更新

format,png

        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);
            }
        }

format,png

format,png


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

format,png

        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);
            }
        }

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

format,png

format,png


保存或者插入

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

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

format,png

        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);
            }
        }

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

format,png

format,png


数据删除

根据实体删除

format,png

        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);
            }
        }

format,png


根据表达式删除

format,png

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

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

format,png

        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);
            }
        }

format,png

format,png

-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()方式解决插入数据时重复键的问题


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

format,png

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值