首页 > 其他分享 >通用的CRUD之LiteDB

通用的CRUD之LiteDB

时间:2023-05-01 22:15:15浏览次数:58  
标签:通用 dic1 CRUD dictable 插入 LiteDB var testdb

前言

你要开发一个系统,是不是首要任务是先建库,建表,建字段,既所谓的数据建模(听起来高大上一点,数据建模也确实是个烧脑的活),要费不少功夫。
不知你是否遇到过这样的场景。A产品有3个测试参数,B产品有6个测试参数,而且值和类型都各不相同,用SQL你要怎么建表呢?
有人会说这简单“参数名,参数值两列搞定”,NO!数据类型考虑了吗,数据量考虑了吗?
有人又说"每个参数建一列,A,B两个产品共建9列用来存各自的值。",如果某天C产品又有9个参数呢,又去增加字段?,你又说”item1,item2...N,多增加几十个备用",有考虑过查询吗?有考虑过他人看到这样的表不头大吗?
还有人说“一列JSON列搞定”,数据查询和数据统计一样把人折磨的不要不要的。

NOSQL的出现,让你眼前一亮,上面的问题迎刃而解。建库,建表,甚至建字段都是很愉悦的事情,你传入什么数据,NOSQL就给你自动创建好,相应的数据库和表(准确的说NoSQL的表叫数据集)。
同一个列可以有不同数据库类型,某一列存单纯的一个数字,还是一个对象都可以随心所欲。

今天要介绍的就是嵌入式NOSQL数据库,LiteDB,就是一个NOSQL版的SQLite。
LiteDB是嵌入式,跨平台,纯c#开发的轻量数据库。详情,请移步到https://www.litedb.org了解。
笔者使用LiteDB,掐指一算,已有6个年头,虽然踩过不少坑,经历过数据库损坏的痛苦经历,但依然没有放弃它,还是爱不释手,因为它在某些应用场景确实非常贴近我的需求。目前经历过几次版本迭代,功能也越来越完善。
现在切入正题
让我一步一步带你增删改查。

安装

Install-Package DbCRUD.LiteDB 安装包

插入数据

插入对象数据到DB

          var dic1 = new Dictionary<string, object>
          {
              { "_id", 2 },
              { "Name", "n2" },
              { "Qty", 200},
              //{ "DDate", DateTime.Now }
          };
          string dictable = "dicdata";
          var result= testdb.Upsert(dictable, dic1);

插入JSON数据到DB

  var dic1 = new Dictionary<string, object>
           {
               { "Name", "n2" },
               { "Qty", 19},
               //{ "DDate", DateTime.Now }
           };
           //异步插入
           string jsondata = JsonConvert.SerializeObject(dic1);
           var result = await testdb.InsertAsync("jsondata", jsondata); 

SQL命令插入,方便喜欢SQL语句的开发人员

testdb.Insert("insert Sqldata('name','date') value ('test','2023-04-16')");

批量插入

 //插入列表
           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", "n2" },
                   { "Qty", 19},
                   { "DDate", DateTime.Now }
               };
               listdata.Add(dic2);
           }
           var listResult= testdb.Insert(dictable, listdata);

更新数据

            //更新部分字段数据
           var updata = new Dictionary<string, object>
           {
               { "Name", "updatetest" },
               { "Qty", 300}
           };
           var upresult = testdb.UpDate(dictable, updata, "_id=2");

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

          var dic1 = new Dictionary<string, object>
          {
              { "_id", 2 },
              { "Name", "n2" },
              { "Qty", 200},
              //{ "DDate", DateTime.Now }
          };
          string dictable = "dicdata";
          var result= testdb.Upsert(dictable, dic1);

查询数据

         testdb.Find<Dictionary<string, object>>(dictable, "_id=2")

删除数据

         string dictable = "dicdata";
           var result = testdb.Delete(dictable,2);

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


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

标签:通用,dic1,CRUD,dictable,插入,LiteDB,var,testdb
From: https://www.cnblogs.com/zzwen/p/17351036.html

相关文章

  • PMP-11-项目经理的通用技能
    1.一个完整的产品生命周期包括概念-计划-开发-验证-发布-运行维护等6个阶段2.通常,产品生命周期要远远长于项目生命周期3.一个完整的项目生命周期可以划分为启动项目、组织与准备、执行工作、结束项目等4个阶段4.项目生命周期的一个重要特征是,项目前期投入资源很少,在执行工作阶......
  • PMP-10-项目经理的通用技能
    项目经理这4个能力是最重要的了:一要有大局观,能够站在凌驾于不同相关方之上的角度,去分析怎么协调项目工作,能达到最好的效果。二要有清晰坚定的目标,坚信自己做的事情一定能成功。三要有换位思考的能力,能够站在别人的角度去思考自己的项目,做出有利于所有人的决策。四要有强大的执......
  • DeepMind:用 GNN 学习通用推理算法
    文|智商掉了一地小孩子才做选择,我的模型全!都!要!近年来,基于深度神经网络的机器学习系统取得了巨大进步,尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化,意味着它们的训练和验证集代表了测试输入的预期分布。相比之下,要真正掌握由推理主导的任务,即使是在......
  • 将IDEA MAVEN项目打包成jar包的通用方法
    将IDEAMAVEN项目打包成jar包的通用方法原文链接:https://blog.csdn.net/qq_56964962/article/details/1255240021.找到左上角File->ProjectStructure,点击(中文:文件->项目结构)2.在弹出的界面中,点击Artifacts(中文:工件),点击内置页面的左上角的+号,选中第一个的第二个,点击 ......
  • makefile 通用模板
    ##Makefile##⭐全速编译命令:makeclean&&make-j$(nproc)#:=就地解析赋值=最后一次赋值?=未赋值时赋值+=接续赋值#mount-tnfs-onolock,vers=3192.168.5.12:/home/book/nfs_rootfs/mnt&&ps-ef|grepjc|grep-vgrep|awk'{print$1}'|xa......
  • 企事业单位通用版招采系统(SRM),招采全过程闭环流程
    前言采购供应商管理的难点:沟通耗费精力,业务协同难,管控混乱。优质的供应商,是直接能够影响采购成本和企业采购战略落地的,而供应商管理的终极路径是建立企业自己的供应商私域流量池。源码获取:qq:262086839一、供应商管理1.供应商准入:支持多种供应商入驻方式,公开申请,他人代录,直接录......
  • 逼真的刺绣Photoshop插件-Realistic Embroidery 3.0汉化版 Win/Mac版通用
    使用RealisticEmbroidery3.0插件只需单击几下,即可将文本、徽标或形状转换为逼真的刺绣/缝合元素。逼真的刺绣3现在是一个完整的Photoshop插件,具有界面、改进的工作流程和许多新功能,将使您的数字缝纫体验更加美好!如图所示,自己体验吧!Bevel我翻译成的倒角,或许有其他更好的翻译,自己......
  • 【HarmonyOS】自定义组件之JavaUI实现通用标题栏组件
    【关键字】标题栏、常用内置组件整合、JavaUI、自定义组件 【1、写在前面】平时我们在开发一个应用时,我们都知道一个完整的项目中会有很多个页面,而这些页面中会有许多通用的部分,比如通用标题栏、通用Dialog、通用下拉菜单等等,在Android开发中我们可以通过LayoutInflater.from......
  • React、Ant Design 5.0 构建通用后台管理系统 - 接口服务环境搭建
    目录项目初始化项目结构package.jsontsconfig.jsonnodemon.jsonindex.tssrc/server.ts运行项目初始化mkdirgeneral-admin-system-servercdgeneral-admin-system-servernpminit-ynpminstalltypescriptts-node@types/nodenodemon@swc/core@swc/helpersregenerator-......
  • React、Ant Design 5.0 构建通用后台管理系统 - 登录页面
    目录安装依赖main.tsxsrc/styles/global.cssApp.tsxsrc/pages/user/Login/index.tsxsrc/pages/user/Login/style.module.css安装依赖npminstallantd@ant-design/icons@ant-design/pro-componentsAntDesign组件库@ant-design/pro-components封装一些好用的常用组件库mai......