通用的CRUD之Mysql



前言

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

安装

Install-Package DbCRUD.Mysql 安装包

数据库连接及初始化

 //数据库连接
 IDbCRUD testdb = new MysqlCRUD(@"Server=127.0.0.1;Database=testdb;Uid=root;Pwd=;");

插入数据

//获取最大ID,用于ID编号
           int dbcount = testdb.TableExists(tb_custormer) ? testdb?.Count(tb_custormer) ?? 0 : 0;
           //**同步插入对象数据
           var customer = new CrudTestModel
           {
               ID = dbcount + 1, //如果要使用DB自身编号功能,ID不要赋值即可
               Name = "对象插入",
               Phones = new string[] { "80000", "90000" },
               IsActive = true,
           };
           var result = testdb.Insert(tb_custormer, customer);

 //**同步插入字典数据
           var dic1 = new Dictionary<string, object>
           {
               //{ "ID", 1 },//***如果不指定ID,插入时会自动编一个int的唯一ID
               { "Name", "mysql自动编号插入" },
               { "Qty", 19},
               { "DDate", DateTime.Now }
           };
           var result11 = testdb.Insert(autoIDData, dic1);
      //**批量插入列表
           List<Dictionary<string, object>> listdata = new List<Dictionary<string, object>>();
           int maxid = testdb.Max<int>(dictable);
           for (int i = 0; i < 10; i++)
           {
               maxid++;
               var dic2 = new Dictionary<string, object>
               {
                   { "ID",maxid },
                   { "Name", $"批量插入{i}" },
                   { "Qty", 19+maxid},
                   { "DDate", DateTime.Now }
               };
               listdata.Add(dic2);
           }
           var listResult= testdb.Insert(dictable, listdata);

更新数据

   //更新前
            var updatepre = testdb.Find<Dictionary<string, object>>(dictable, "ID=2")?.FirstOrDefault();
          
            var updata = new Dictionary<string, object>
            {
                { "Name", "更新指定字段数据" },
                { "Qty", 600}
            };
            var upresult = testdb.UpDate(dictable, updata, "ID=2");   //更新ID=2的数据
            Assert.IsTrue(upresult.Stutas);
            //更新后
            var getupdata = testdb.Find<Dictionary<string, object>>(dictable, "ID=2")?.FirstOrDefault();
            Assert.AreEqual(300, getupdata.GetValueOrDefault("Qty", 0));

更新及插入数据(数据存在更新,不存在插入)

//** 更新或插入数据
           var dic1 = new Dictionary<string, object>
           {
               { "ID", 2 },
               { "Name", "插入或更新单条数据" },
               { "Qty", 200},
               { "DDate", DateTime.Now }
           };
           var result= testdb.Upsert(dictable, dic1);
//** 批量插入或更新
           var dic3 = new Dictionary<string, object>
           {
               { "ID", 3 },
               { "Name", "批量插入或更新" },
               { "Qty", 300},
               { "DDATE", DateTime.Now }
           };
           List<Dictionary<string,object>> listdata=new List<Dictionary<string, object>> { dic3,dic1};
           var listresult = testdb.Upsert(dictable, listdata);

查询数据

   //查找id=2的数据
   var databyid = testdb.FindByID<Dictionary<string, object>>(dictable,2);
   //查找Qty>10的数据
   var wheredata = testdb.Find<Dictionary<string, object>>(dictable, "Qty>10");
   //sql语句查找的数据
   string sqlcmd = $"select * from {dictable}";
   var sqldata = testdb.Find<Dictionary<string, object>>(sqlcmd);
   //分页查找的数据
   var pagedata = testdb.GetPagingData<Dictionary<string, object>>(dictable, "Qty>10",pageindex:1,pagenumber:10);

删除数据

   //**删除_id=3的数据
   var result = testdb.Delete(dictable,3);
   //**删除qty<30的数据
   var wherresult = testdb.Delete(dictable, "Qty<30");
   //**使用sql语句删除_id=30的数据
   string sql = $"delete {dictable} where _id=30";
   var sqlresult = testdb.Delete(sql);

更多使用方法请移步到仓库 https://gitee.com/lzcode/db-crud


我的分享希望能给你带去帮助,您的打赏是我继续为您分享的动力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值