翼度科技»论坛 编程开发 .net 查看内容

通用的CRUD之Mysql

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
前言

前一篇说了NOSQL的增删改查,今天来说说SQL数据库MySQL的增删改查。虽然本人已大部分是NOSQL数据库,但是SQL类数据库有些功能,比如查询还是比起NOSQL还是有优势的。
如查询产量大于100,SQL是这样的“xxx>100”,而NOSQL,是这样的“{xxx:{ $gt: 100} }”。要是条件复杂点,像统计,几个JSON嵌套下来,直接打消了好多人学下去的欲望。
话不多说,现在切入正题
让我一步一步带你增删改查。
安装

Install-Package DbCRUD.Mysql 安装包
数据库连接及初始化
  1. //数据库连接
  2. IDbCRUD testdb = new MysqlCRUD(@"Server=127.0.0.1;Database=testdb;Uid=root;Pwd=;");
复制代码
插入数据
  1. //获取最大ID,用于ID编号
  2.            int dbcount = testdb.TableExists(tb_custormer) ? testdb?.Count(tb_custormer) ?? 0 : 0;
  3.            //**同步插入对象数据
  4.            var customer = new CrudTestModel
  5.            {
  6.                ID = dbcount + 1, //如果要使用DB自身编号功能,ID不要赋值即可
  7.                Name = "对象插入",
  8.                Phones = new string[] { "80000", "90000" },
  9.                IsActive = true,
  10.            };
  11.            var result = testdb.Insert(tb_custormer, customer);
复制代码
  1. //**同步插入字典数据
  2.            var dic1 = new Dictionary<string, object>
  3.            {
  4.                //{ "ID", 1 },//***如果不指定ID,插入时会自动编一个int的唯一ID
  5.                { "Name", "mysql自动编号插入" },
  6.                { "Qty", 19},
  7.                { "DDate", DateTime.Now }
  8.            };
  9.            var result11 = testdb.Insert(autoIDData, dic1);
  10.       //**批量插入列表
  11.            List<Dictionary<string, object>> listdata = new List<Dictionary<string, object>>();
  12.            int maxid = testdb.Max<int>(dictable);
  13.            for (int i = 0; i < 10; i++)
  14.            {
  15.                maxid++;
  16.                var dic2 = new Dictionary<string, object>
  17.                {
  18.                    { "ID",maxid },
  19.                    { "Name", $"批量插入{i}" },
  20.                    { "Qty", 19+maxid},
  21.                    { "DDate", DateTime.Now }
  22.                };
  23.                listdata.Add(dic2);
  24.            }
  25.            var listResult= testdb.Insert(dictable, listdata);
复制代码
更新数据
  1.    //更新前
  2.             var updatepre = testdb.Find<Dictionary<string, object>>(dictable, "ID=2")?.FirstOrDefault();
  3.          
  4.             var updata = new Dictionary<string, object>
  5.             {
  6.                 { "Name", "更新指定字段数据" },
  7.                 { "Qty", 600}
  8.             };
  9.             var upresult = testdb.UpDate(dictable, updata, "ID=2");   //更新ID=2的数据
  10.             Assert.IsTrue(upresult.Stutas);
  11.             //更新后
  12.             var getupdata = testdb.Find<Dictionary<string, object>>(dictable, "ID=2")?.FirstOrDefault();
  13.             Assert.AreEqual(300, getupdata.GetValueOrDefault("Qty", 0));
复制代码

更新及插入数据(数据存在更新,不存在插入)
  1. //** 更新或插入数据
  2.            var dic1 = new Dictionary<string, object>
  3.            {
  4.                { "ID", 2 },
  5.                { "Name", "插入或更新单条数据" },
  6.                { "Qty", 200},
  7.                { "DDate", DateTime.Now }
  8.            };
  9.            var result= testdb.Upsert(dictable, dic1);
  10. //** 批量插入或更新
  11.            var dic3 = new Dictionary<string, object>
  12.            {
  13.                { "ID", 3 },
  14.                { "Name", "批量插入或更新" },
  15.                { "Qty", 300},
  16.                { "DDATE", DateTime.Now }
  17.            };
  18.            List<Dictionary<string,object>> listdata=new List<Dictionary<string, object>> { dic3,dic1};
  19.            var listresult = testdb.Upsert(dictable, listdata);
复制代码
查询数据
  1.    //查找id=2的数据
  2.    var databyid = testdb.FindByID<Dictionary<string, object>>(dictable,2);
  3.    //查找Qty>10的数据
  4.    var wheredata = testdb.Find<Dictionary<string, object>>(dictable, "Qty>10");
  5.    //sql语句查找的数据
  6.    string sqlcmd = $"select * from {dictable}";
  7.    var sqldata = testdb.Find<Dictionary<string, object>>(sqlcmd);
  8.    //分页查找的数据
  9.    var pagedata = testdb.GetPagingData<Dictionary<string, object>>(dictable, "Qty>10",pageindex:1,pagenumber:10);
复制代码

删除数据

[code]   //**删除_id=3的数据   var result = testdb.Delete(dictable,3);   //**删除qty

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具