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

通用的CRUD之Sqlite

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
前言

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

Install-Package DbCRUD.SqlLite 安装包
数据库连接及初始化
  1. //数据库连接
  2. IDbCRUD testdb = new SqlLiteCRUD($@"Data Source=sqlitedb.db; Cache=Shared");
复制代码
插入数据
  1. int dbcount =testdb.TableExists(tb_custormer)? testdb?.Count(tb_custormer)??0: 0;
  2. //**同步插入对象数据
  3. var customer = new CrudTestModel
  4. {
  5.    ID = dbcount + 1, ////实体类,ID不赋值,默认根据数据类型自动整数编号,支持int,long,objectid
  6.    Name = "对象插入",
  7.    Phones = new string[] { "80000", "90000" },
  8.    Dic = new Dictionary<string, object>
  9.    {
  10.        { "Name", "嵌套数据" },
  11.        { "DDate", DateTime.Now }
  12.    },
  13.    IsActive = true,
  14. };
复制代码
  1. //**同步插入字典数据
  2. var dic1 = new Dictionary<string, object>
  3. {
  4.    //{ "ID", 1 },//***如果不指定ID,插入时会自动编一个int的唯一ID
  5.    { "Name", "自动编号插入" },
  6.    { "Qty", DateTime.Now.Minute},
  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

举报 回复 使用道具