前言

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

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

数据更新

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

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

传对象的用法


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

加入按钮

postgresql 批量更新 json 字段 sqlsugar批量更新_sql

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_02

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

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_03

postgresql 批量更新 json 字段 sqlsugar批量更新_python_04


传入对象根据条件更新

postgresql 批量更新 json 字段 sqlsugar批量更新_编程语言_05

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

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_06

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_07

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

不传对象的用法

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

postgresql 批量更新 json 字段 sqlsugar批量更新_编程语言_08

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

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_09

postgresql 批量更新 json 字段 sqlsugar批量更新_mysql_10


联表更新

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_11

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

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_12

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_13


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

postgresql 批量更新 json 字段 sqlsugar批量更新_python_14

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

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

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_15

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_16


保存或者插入

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

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

postgresql 批量更新 json 字段 sqlsugar批量更新_python_17

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

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

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_18

postgresql 批量更新 json 字段 sqlsugar批量更新_mysql_19


数据删除

根据实体删除

postgresql 批量更新 json 字段 sqlsugar批量更新_mysql_20

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

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_21


根据表达式删除

postgresql 批量更新 json 字段 sqlsugar批量更新_python_22

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

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

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_23

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

postgresql 批量更新 json 字段 sqlsugar批量更新_sql_24

postgresql 批量更新 json 字段 sqlsugar批量更新_数据库_25

-END-