通用的CRUD之LiteDB

前言

你要开发一个系统,是不是首要任务是先建库,建表,建字段,既所谓的数据建模(听起来高大上一点,数据建模也确实是个烧脑的活),要费不少功夫。
不知你是否遇到过这样的场景。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


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

通用的CRUD之LiteDB

原文链接:https://www.cnblogs.com/zzwen/archive/2023/05/05/17351036.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通用的CRUD之LiteDB - Python技术站

(0)
上一篇 2023年5月6日
下一篇 2023年5月6日

相关文章

  • C#(.Net)将非托管dll嵌入exe中的实现

    C# (.Net)可以嵌入非托管dll文件到exe文件中,使得软件的分发和运行更加简单。下面是该过程的实现攻略: 第一步:创建工程 首先,在Visual Studio中创建一个C#应用程序工程。然后,添加非托管dll文件到项目中。注意,该dll文件必须与工程中的所有程序集(包括已添加的其他dll文件)都是兼容的,否则该dll文件会导致工程编译失败。 第二步:…

    C# 2023年6月1日
    00
  • Entity Framework使用ObjectContext类

    Entity Framework是一个用于.NET平台的ORM(Object Relational Mapping)框架,它的主要目的是将对数据库的操作简化为对象的操作。ObjectContext是Entity Framework中用于管理对象和数据库之间映射关系的核心类之一。 使用ObjectContext可以完成以下操作:1. 定义实体:使用Object…

    C# 2023年6月3日
    00
  • WPF+SkiaSharp实现自绘弹幕效果

    下面是”WPF+SkiaSharp实现自绘弹幕效果”的完整攻略: 简介 WPF(Windows Presentation Foundation)是一个用于创建Windows桌面应用程序的技术,它提供了大量的视觉效果和控件,使得开发者可以快速地构建出富有表现力的用户界面。SkiaSharp是由Google开发的一个跨平台的2D图形渲染引擎,它可以实现在不同平台…

    C# 2023年6月6日
    00
  • asp.net得到本机数据库实例的两种方法代码

    下面我将详细讲解如何在ASP.NET中得到本机数据库实例的两种方法代码。 方法一:使用LocalDB连接数据库 1. 安装LocalDB 首先,我们需要在本机安装LocalDB。可以在微软的官方网站上下载并安装:https://www.microsoft.com/en-us/sql-server/sql-server-downloads 2. 创建数据库 安…

    C# 2023年5月31日
    00
  • C#多线程系列之线程等待

    下面是关于“C#多线程系列之线程等待”的完整攻略。 线程等待 在线程的执行过程中,我们可能需要等待某些线程执行完毕后再进行后续操作。下面是两种常见的线程等待方式。 Thread.Join 方法 Thread.Join 方法允许一个线程等待其他线程执行完毕后再继续执行。下面是一个示例代码: using System; using System.Threadin…

    C# 2023年5月15日
    00
  • Jenkins编译.NET Core、.NET Framework项目并远程部署到IIS

    Jenkins是一个流行的开源持续集成和持续交付工具,可以用于编译、测试和部署软件。在本文中,我们将介绍如何使用Jenkins编译.NET Core、.NET Framework项目并远程部署到IIS的完整攻略。 步骤 步骤1:安装Jenkins 首先,需要安装Jenkins。可以使用以下命令在Ubuntu上安装Jenkins: wget -q -O – h…

    C# 2023年5月17日
    00
  • C#中的匿名方法实例解析

    C#中的匿名方法实例解析 什么是匿名方法 在C#中,匿名方法指的是一个没有名称的方法,通常在方法参数中直接声明并实现,可以作为委托类型的参数或返回值使用。 匿名方法的形式如下: delegate (参数列表) { // 方法体 }; 其中,delegate是委托类型,参数列表和方法体与普通的方法一样,但没有方法名。通过定义参数列表和方法体来实现特定的功能。 …

    C# 2023年6月6日
    00
  • 正则表达式(语法篇推荐)

    下面我来详细讲解正则表达式的语法和应用。 什么是正则表达式? 正则表达式(Regular Expression)又称作“规则表达式”,简称正则(RegExp),是一种用来描述文本模式的工具。使用正则表达式可以对字符串进行高级的模式匹配和文本处理。正则表达式是一种通用的语言,它不仅可以在程序设计中被使用,而且可用于各种文本编辑器、命令行工具等应用中。 正则表达…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部