首页 > 数据库 >通用的CRUD之Sqlite

通用的CRUD之Sqlite

时间:2023-05-19 21:25:49浏览次数:52  
标签:Sqlite 通用 CRUD dictable 插入 testdb var new ID

前言

SQLite是一种轻量级的关系型数据库管理系统,支持跨平台操作。它可以嵌入到程序中,无需单独的服务器进程或者配置文件,减少了数据库维护的负担和运行的复杂性。SQLite的数据存储在单个文件中,方便备份、传输和分享,也容易进行版本管理。SQLite拥有良好的性能、可靠的稳定性和丰富的功能,成为了许多应用程序和操作系统中的首选数据库解决方案。
话不多说,现在切入正题
让我一步一步带你增删改查。

安装

Install-Package DbCRUD.SqlLite 安装包

数据库连接及初始化

 //数据库连接
IDbCRUD testdb = new SqlLiteCRUD($@"Data Source=sqlitedb.db; Cache=Shared");

插入数据

int dbcount =testdb.TableExists(tb_custormer)? testdb?.Count(tb_custormer)??0: 0;
//**同步插入对象数据
var customer = new CrudTestModel
{
   ID = dbcount + 1, ////实体类,ID不赋值,默认根据数据类型自动整数编号,支持int,long,objectid
   Name = "对象插入",
   Phones = new string[] { "80000", "90000" },
   Dic = new Dictionary<string, object>
   {
       { "Name", "嵌套数据" },
       { "DDate", DateTime.Now }
   },
   IsActive = true,
};

//**同步插入字典数据
var dic1 = new Dictionary<string, object>
{
   //{ "ID", 1 },//***如果不指定ID,插入时会自动编一个int的唯一ID
   { "Name", "自动编号插入" },
   { "Qty", DateTime.Now.Minute},
   { "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


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

标签:Sqlite,通用,CRUD,dictable,插入,testdb,var,new,ID
From: https://www.cnblogs.com/zzwen/p/17416320.html

相关文章

  • 老杜MyBatis框架从入门到精通(三)使用MyBatis完成CRUD
    mybatis做为目前国内最为流行的开源orm框架,我们平时在使用时会感受到其带来的诸多便利,但是很少去深入分析,mybatis源码代码量不多,功能丰富,是一个很好的学习样例,本系列文章就和大家一起来学习mybatis框架本系列笔记根据动力节点B站上老杜讲的mybatis教程整理~学习地址:https://www......
  • 通用格式化脚本format
    模仿zsh插件extact,因为代码格式化和解压相似,很多种类,需要识别源文件的后缀,进而调用合适的工具。这里只贴上部分,其他的部分几乎没有改动。 其他的有需要再加吧。......
  • Spring boot 整合 ffmpeg 实现给视频添加文字水印 只有上传minio(理论通用!!)
    只要有ffmpeg命令理论可以实现所有ffmpeg能做的的事儿!!思路:前端上传视频通过commons-io的FileUtils.copyInputStreamToFile()将流复制到文件中java执行ffmpeg命令对这个文件进行转换输出到另外一个临时文件在将添加水印后的文件转成inputStream流上传到minio(本人小白可能有......
  • CPU 中通用寄存器的作用
    在计算机的中央处理器(CPU)中,通用寄存器(General-PurposeRegisters)是其中的一个重要组件。通用寄存器是一种高速的内部存储器,用于存储和操作计算机中的数据。它们是CPU的一部分,用于临时存储指令和数据,以支持计算、逻辑操作和数据传输等操作。下面将详细介绍通用寄存器的作用和功能。......
  • MongoDB + SpringBoot 的基础CRUD、聚合查询
    1、数据准备1.1、springboot导包springboot版本:2.7.10点击查看代码<!--mongodb的包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifact......
  • wincc报表,通用报表,数据报表,独立于任何组态软件运行(为windows,pc端独立软件),
    wincc报表,通用报表,数据报表,独立于任何组态软件运行(为windows,pc端独立软件),1:可以采集任何pc端组态软件(ifix,wincc,组态王,simatic_net,pcacess,pcacesssmart,kep等等)2:支持服务器读写,同时支持数据库读写修改3:支持日报,月报,时报,年报等多种报表生成4:支持时间段,单字段,值区间,字段排序等功能......
  • sqlite 删除数据后文件size并不会减小,解决办法:
    E:\sqlite3>sqlite3db_stu.sqlite3"VACUUM;"E:\sqlite3>dir驱动器E中的卷没有标签。卷的序列号是0672-3CDAE:\sqlite3的目录2023/05/1617:33<DIR>.2023/05/1617:33<DIR>..2023/05/1617:33169,776,128......
  • 用嵌入式sqlite部署winform应用程序
    EmbeddedResource表示数据库已嵌入到您的dll中。Copytooutputdirectory设置在这种情况下不适用,它用于BuildAction:Content嵌入数据库后,您基本上必须在首次使用时将其取消嵌入。为此,将其从Assembly中读取并将其存储到文件中。classEmbeddedResourceTest{publicsta......
  • redis学习2通用命令--黑马
    key通用操作基本操作delkeyexistskeytypekey扩展操作为指定key设置有效期expirekeysecondspexpirekeymillisecondsexpireatkeytimestamppexpireatkeymilliseconds-timestamp获取key的有效时间(剩余时间)ttlkey(返回-2代表key已消失,返回-1表示存在key,返回其......
  • 一种通用的业务监控触发方案设计 | 京东云技术团队
    一、背景业务监控是指通过技术手段监控业务代码执行的最终结果或者状态是否符合预期,实现业务监控主要分成两步:一、在业务系统中选择节点发送消息触发业务监控;二、系统在接收到mq消息或者定时任务调度时,根据消息中或者任务中的业务数据查询业务执行的结果或状态并与业务预期的结果相......