手把手教你C#如何使用SqlSugar操作MySQL数据库三 SqlSugar使用案例

Posted 铸梦xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你C#如何使用SqlSugar操作MySQL数据库三 SqlSugar使用案例相关的知识,希望对你有一定的参考价值。

SqlSugar 连接数据库、创建数据表、增删改查用法

1.SqlSugar 连接mysql数据库

1.创建数据库

using SqlSugar;
public class DB : Singleton<DB>

	  public  static SqlSugarClient mDB;
   
        public void InitDB()
        
            //建立数据库链接
            mDB = new SqlSugarClient(new ConnectionConfig()
            
                //Server:表示数据库地址    uid:表示数据库管理员id        pwd:表示数据库管理员密码     database:表示连接数据库的库名(如果没有可以自定义,调用 mDB.DbMaintenance.CreateDatabase()会生成)

                ConnectionString = "server=127.0.0.1;uid=root;pwd=zhumengxy;database=fish",
                DbType = DbType.MySql,//设置数据库类型     
                IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放     
                InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息  
            );
            //用来打印Sql方便你调试   
            mDB.Aop.OnLogExecuting = (sql, pars) =>
            
                Console.WriteLine(sql + "\\r\\n" +
                mDB.Utilities.SerializeObject(pars.ToString()));
                Console.WriteLine();
            ;
            //创建数据库 如果该库不存在,则进行创建。(这里创建的是名字为 fish 数据库)
            mDB.DbMaintenance.CreateDatabase();
			//初始化数据表,如果没有则创建
            mDB.CodeFirst.InitTables(typeof(UserDataTabel));
        

2.创建库中的数据表

InitTables() 接口用来初始化我们的实体类映射的数据表。

类的变量名字就是数据表的字段名字。

下面是数据表对应的实体类:

public class UserDataTabel

        //ID 自增  主键
        [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
        public int Id  get; set; 
        //用户id
        public long userid  get; set; 
        //用户昵称
        [SugarColumn(IsNullable = true)]
        public string NickName  get; set; 

        //签名
        [SugarColumn(ColumnDataType = "Nvarchar(255)")]//自定格式的情况 length不要设置
        public string signture  get; set; 

        //注册时间
        [SugarColumn(IsNullable = true)]
        public DateTime RegisterTime  get; set; 

        public  override string ToString()
        
            return $"NickName:NickName  userid:userid  Signture:signture  RegisterTime:RegisterTime";
         

当我们执行过 InitDB() 接口后 打开 MySQL Workbench 数据库可视化软件后,可以看到我们的 fish 数据库以及userdatatabel数据表就被创建出来了。
当我们的数据库和数据表被创建出来后,我们就可以开始下一步了。

3.数据的插入

  #region 数据插入
        public void Insertable()
        
            //在表的末尾插入一条数据  返回值是插入数据的个数
            UserDataTabel userdata1 = new UserDataTabel()  userid = 4, NickName = "zm100", RegisterTime = DateTime.Now, signture = "数据插入测试1" ;
            int count = mDB.Insertable(userdata1).ExecuteCommand();
            Console.WriteLine($"插入了 count 条数据");

            //在表的末尾插入一条数据  返回值是插入成功的自增列
            UserDataTabel userdata2 = new UserDataTabel()  userid = 6, NickName = "zm100", RegisterTime = DateTime.Now, signture = "数据插入测试1,返回自增列" ;
            int column = mDB.Insertable(userdata2).ExecuteReturnIdentity();
            Console.WriteLine($"在数据库中插入了一条数据,自增列数值为:" + column);

            //在表的末尾插入一条数据,返回值是插入成功的实体对象
            UserDataTabel userData3 = new UserDataTabel()  userid = 5, NickName = "zm200", RegisterTime = DateTime.Now, signture = "返回对象数据插入测试" ;
            UserDataTabel userData = mDB.Insertable(userData3).ExecuteReturnEntity();
            Console.WriteLine($"数据插入成功 插入对象 userData.NickName 行插入了一条数据");
        
        /// <summary>
        /// 插入表数据到指定的列
        /// </summary>
        public void InsertableDataToTargetColumns()
        
            //在表的末尾只插入指定的列数据
            UserDataTabel userData = new UserDataTabel()  userid = 66, NickName = "zm422", RegisterTime = DateTime.Now, signture = "指定列插入测试,返回自增列序号" ;

            //插入指定的 userid nickName signture 到数据表中
            int column = mDB.Insertable(userData).InsertColumns(t => new  t.userid, t.NickName, t.signture ).ExecuteReturnIdentity();

            Console.WriteLine($"在数据库中插入了一条数据,自增列数值为:" + column);
        

        /// <summary>
        /// 插入数据到表中,排除指定的列
        /// </summary>
        public void InsertableDataIgnoreTargetColumns()
        
            //在表的末尾只插入指定的列数据
            UserDataTabel userData = new UserDataTabel()  userid = 77, NickName = "zm77", RegisterTime = DateTime.Now, signture = "排除列插入测试,返回自增列序号" ;

            //插入指定的 userid nickName signture 到数据表中
            int column = mDB.Insertable(userData).IgnoreColumns(t => new  t.NickName ).ExecuteReturnIdentity();

            Console.WriteLine($"在数据库中插入了一条数据,自增列数值为:" + column);
        

        /// <summary>
        /// 插入数据到表中,根据条件排除对应的列
        /// </summary>
        public void InsertableDataIgnoreWhereTargetColumns()
        
            //在表的末尾只插入指定的列数据
            UserDataTabel userData = new UserDataTabel()  userid = 77, NickName = "zm88", RegisterTime = DateTime.Now, signture = "根据条件排除对应的列,返回自增列序号" ;

            //插入数据时排除NickName==zm88的列
            int column = mDB.Insertable(userData).IgnoreColumns(t => t.NickName == "zm88").ExecuteReturnIdentity();

            Console.WriteLine($"在数据库中插入了一条数据,自增列数值为:" + column);
        


        /// <summary>
        /// 插入列表数据到数据表中,性能很快
        /// </summary>
        public void InsertableDataList()
        
            //在表的末尾只插入指定的列数据
            List<UserDataTabel> dataList = new List<UserDataTabel>();
            dataList.Add(new UserDataTabel()  userid = 90, NickName = "zm90", RegisterTime = DateTime.Now, signture = "列表数据插入90" );
            dataList.Add(new UserDataTabel()  userid = 91, NickName = "zm91", RegisterTime = DateTime.Now, signture = "列表数据插入91" );
            dataList.Add(new UserDataTabel()  userid = 92, NickName = "zm92", RegisterTime = DateTime.Now, signture = "列表数据插入92" );

            //插入数据时排除NickName==zm88的列
            int count = mDB.Insertable(dataList).ExecuteCommand();

            Console.WriteLine($"在数据库中插入了个列表,插入成功的数据长度:" + count);
        

        /// <summary>
        /// 插入数据到表中,插入时上锁 (锁是保证在高并发修改数据时数据的完整性,保证在同一时间只能由一个Task去修改该数据
        /// 从而避免同时间有多个Task去修改该数据导致数据的异常)
        /// </summary>
        public void InsertableDataWithUpLock()
        
            //在表的末尾只插入指定的列数据
            UserDataTabel userData = new UserDataTabel()  userid = 898, NickName = "zm898", RegisterTime = DateTime.Now, signture = "以上锁的方式插入数据,返回自增列序号" ;

            //插入数据时排除NickName==zm88的列
            int column = mDB.Insertable(userData).With("SQLLock").ExecuteReturnIdentity();

            Console.WriteLine($"在数据库中插入了一条数据,自增列数值为:" + column);
        
        #endregion

4.数据的查询

  #region 数据查询
        /// <summary>
        /// 查询表中的所有数据 常用于装备列表拉取
        /// </summary>
        public List<UserDataTabel> QueryDataList()
        
            //查询表中的所有数据
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().ToList();
            //打印表中数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            
            return userDataList;
        

        /// <summary>
        /// 根据指定的个数从表的第一行开始查询指定个数的数据
        /// </summary>
        public void QueryDataListByCount()
        
            //查询表中指定的数据
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().Take(3).ToList();
            //打印表中数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            
        

        /// <summary>
        /// 根据主键查询指定的数据  常用语查询表中指定个数的数据
        /// </summary>
        public void QueryDataByPrimaryKey()
        
            //根据指定的主键id查询表中指定的数据
            UserDataTabel userdata = mDB.Queryable<UserDataTabel>().InSingle(10);
            //打印数据
            Console.WriteLine(userdata.ToString());
        

        /// <summary>
        /// 根据条件查询指定的数据  可用于查询用户的装备或道具信息
        /// </summary>
        public void QueryDataByWhere()
        
            //根据指定的条件查询数据
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().Where(t => t.NickName == "zm91" || t.NickName == "ZM").ToList();
            //打印数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            
        

        /// <summary>
        /// 查询数据列表并进行排序  可用于排行榜数据查询
        /// </summary>
        public void QueryDataListAndSort()
        
            //根据指定的条件查询数据  Asc表示升序,数值由小变大,最小的在前面,逐渐上升。Desc 表示降序,最大的在前面,逐渐下降
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().OrderBy(t => t.userid, OrderByType.Asc).ToList();
            //打印数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            
        
        /// <summary>
        /// 查询指定数据是否存在  可用账号注册或其他验证
        /// </summary>
        public void QueryDataIsExists()
        
            //根据指定的条件查询数据 如果数据存在,返回True,数据不存在返回False
            bool dataIsExists = mDB.Queryable<UserDataTabel>().Where(t => t.userid == 2334).Any();
            //打印数据
            Console.WriteLine("dataIsExists:" + dataIsExists);
        
        /// <summary>
        /// 通过匹配查询数据
        /// </summary>
        public void QueryDataByMatchs()
        
            List<string> matchsList = new List<string>  "zm", "zm91" ;
            // 根据列表中数据去匹配查询表中的所有数据
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().Where(t => matchsList.Contains(t.NickName)).ToList();
            //打印数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            
        
        /// <summary>
        /// 通过SQLFunc查询数据
        /// </summary>
        public void QueryDataBySQLFunc()
        
            //查询所有昵称中包含zm的数据
            List<UserDataTabel> userDataList = mDB.Queryable<UserDataTabel>().Where(t => SqlFunc.Contains(t.NickName, "zm")).ToList();
            //打印数据
            foreach (var item in userDataList)
            
                Console.WriteLine(item.ToString());
            

        
        #endregion

5.数据更新

        #region 更新数据
        /// <summary>
        /// 单条数据更新
        /// </summary>
        public void UpdatetableData()
        
            //通过查询获取名称为zm91的第一条数据
            UserDataTabel userData = mDB.Queryable<UserDataTabel>().Where(t => t.NickName == "zm91").First();//First,返回序列中的第一条记录,如果没有记录,则引发异常
            if (userData != null)
            
                //修改数据并进行更新
                userData.RegisterTime = DateTime.Now;
                mDB.Updateable(userData).ExecuteCommand();
            

            //FirstOrDefault, 返回序列中的第一条记录,如果序列中不包含任何记录,则返回默认值。

            //Single,返回序列中的唯一一条记录,如果没有或返回多条,则引发异常。

            //SingleOrDefault,返回序列中满足指定条件的唯一元素;如果这类元素不存在,则返回默认值;如果有多个元素满足该条件,此方法
        
        /// <summary>
        /// 列表数据更新
        /// </summary>
        public void UpdatetableDataList()
        
            //查询数据库中的所有数据
            List<UserDataTabel> userDatalist = QueryDataList();
            foreach (var item in userDatalist)
            
                item.RegisterTime = DateTime.Now;
            
            //更新数据列表
            mDB.Updateable(userDatalist).ExecuteCommand()<

☀️手把手教你用 C# 下载文件的十八般武艺☀️《❤️记得收藏❤️》

☀️手把手教你用 C# 下载文件的十八般武艺☀️《❤️记得收藏❤️》