当前位置:   article > 正文

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

c# 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));
        }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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}";
        } 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

当我们执行过 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107

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();
        }
        #endregion
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

6.数据保存

        #region 数据保存
        /// <summary>
        /// 保存数据   如果表中没有该数据,执行插入操作。否则执行更新操作。
        /// </summary>
        public void SavetableData()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "迈巴赫Sss";
            userData.RegisterTime = DateTime.Now;

            //Storageable表示把当前对象存储为新数据
            mDB.Storageable(userData).ExecuteCommand();

            userData.signture = "迈巴赫Sss680";
            mDB.Updateable(userData).ExecuteCommand();

        }
        #endregion
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

7.数据删除

 #region 删除数据  
        /// <summary>
        /// 根据实体对象删除数据  
        /// </summary>
        public void DeletetableDataByEntity()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "宾利";
            userData.RegisterTime = DateTime.Now;
            //删除数据
            int count = mDB.Deleteable(userData).ExecuteCommand();
            Console.WriteLine("删除成功的个数:" + count);
        }
        /// <summary>
        /// 根据条件删除数据
        /// </summary>
        public void DeletetableDataByWhere()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "宾利";
            userData.RegisterTime = DateTime.Now;
            //插入一条数据
            mDB.Insertable(userData).ExecuteCommand();

            //删除所有签名为宾利的所有数据  如果没有这个数据,返回值为0
            int deleteCount = mDB.Deleteable<UserDataTabel>().Where(t => t.signture == "宾利").ExecuteCommand();
            Console.WriteLine("删除成功的个数:" + deleteCount);
        }
        #endregion
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

2.整体案例脚本代码

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

    }
    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();
            };
            //创建数据库库
            mDB.DbMaintenance.CreateDatabase();

            //初始化数据表,如果没有则创建
            mDB.CodeFirst.InitTables(typeof(UserDataTabel));
            //mDB.CodeFirst.InitTables(typeof(UserInfoDB));
            //插入数据
            Insertable();
            //InsertableDataToTargetColumns();
            //InsertableDataExcludeTargetColumns();
            //InsertableDataIgnoreWhereTargetColumns();
            //InsertableDataList();
            //InsertableDataWithUpLock();

            //数据查询
            //QueryDataList();
            //QueryDataListByCount();
            //QueryDataByPrimaryKey();
            //QueryDataByWhere();
            //QueryDataListAndSort();
            //QueryDataIsExists();
            //QueryDataBySQLFunc();
            //QueryDataByMatchs();


            //更新数据
            //UpdatetableDataList();
            //UpdatetableData();
            //SavetableData();

            //删除数据
            //DeletetableDataByEntity();
            //DeletetableDataByWhere();
        }

    
        #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

        #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

        #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();
        }
        #endregion

        #region 数据保存
        /// <summary>
        /// 保存数据   如果表中没有该数据,执行插入操作。否则执行更新操作。
        /// </summary>
        public void SavetableData()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "迈巴赫Sss";
            userData.RegisterTime = DateTime.Now;

            //Storageable表示把当前对象存储为新数据
            mDB.Storageable(userData).ExecuteCommand();

            userData.signture = "迈巴赫Sss680";
            mDB.Updateable(userData).ExecuteCommand();

        }
        #endregion

        #region 删除数据  
        /// <summary>
        /// 根据实体对象删除数据  
        /// </summary>
        public void DeletetableDataByEntity()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "宾利";
            userData.RegisterTime = DateTime.Now;
            //删除数据
            int count = mDB.Deleteable(userData).ExecuteCommand();
            Console.WriteLine("删除成功的个数:" + count);
        }
        /// <summary>
        /// 根据条件删除数据
        /// </summary>
        public void DeletetableDataByWhere()
        {
            UserDataTabel userData = new UserDataTabel();
            userData.NickName = "新梦想起航!";
            userData.userid = 999;
            userData.signture = "宾利";
            userData.RegisterTime = DateTime.Now;
            //插入一条数据
            mDB.Insertable(userData).ExecuteCommand();

            //删除所有签名为宾利的所有数据  如果没有这个数据,返回值为0
            int deleteCount = mDB.Deleteable<UserDataTabel>().Where(t => t.signture == "宾利").ExecuteCommand();
            Console.WriteLine("删除成功的个数:" + deleteCount);
        }
        #endregion
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378

文章来自于铸梦老师,铸梦之路系列课程。
想了解更多框架、帧同步技术、UGUI优化相关技术可在企鹅kt搜索 铸梦xy。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号