隐藏

C#如何使用SqlSugar操作MySQL数据库

发布:2023/3/22 22:13:18作者:管理员 来源:本站 浏览次数:309

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


   1.SqlSugar 连接MySQL数据库

       1.创建数据库

       2.创建库中的数据表

       3.数据的插入

       4.数据的查询

       5.数据更新

       6.数据保存

       7.数据删除

   2.整体案例脚本代码


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

       }

       #endregion


 


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


 


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


 


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