通用的CRUD之Sqlite

来源:https://www.cnblogs.com/zzwen/archive/2023/05/19/17416320.html
-Advertisement-
Play Games

# 前言 SQLite是一種輕量級的關係型資料庫管理系統,支持跨平臺操作。它可以嵌入到程式中,無需單獨的伺服器進程或者配置文件,減少了資料庫維護的負擔和運行的複雜性。SQLite的數據存儲在單個文件中,方便備份、傳輸和分享,也容易進行版本管理。SQLite擁有良好的性能、可靠的穩定性和豐富的功能,成 ...


前言

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


我的分享希望能給你帶去幫助,您的打賞是我繼續為您分享的動力。

做了就有可能!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 01【熟悉】實際開發中的問題? 現在我們一個項目跑在一個tomcat裡面 當一個tomcat無法支持高的併發量時。可以使用多個tomcat 那麼這多個tomcat如何雲分配請求 |-nginx 02【熟悉】伺服器概述 1,目前常見的web伺服器 1,Apache(http://httpd.apach ...
  • 在前面的文章`《驅動開發:運用MDL映射實現多次通信》`LyShark教大家使用`MDL`的方式靈活的實現了內核態多次輸出結構體的效果,但是此種方法並不推薦大家使用原因很簡單首先內核空間比較寶貴,其次內核裡面不能分配太大且每次傳出的結構體最大不能超過`1024`個,而最終這些記憶體由於無法得到更好的釋... ...
  • 一、問題引入 Linux網路編程:socket & fork()多進程 實現clients/server通信 隨筆介紹了通過fork()多進程實現了伺服器與多客戶端通信。但除了多進程能實現之外,多線程也是一種實現方式。 重要的是,多進程和多線程是涉及操作系統層次。隨筆不僅要利用pthread_cre ...
  • Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程式、CGI 腳本、Java 對象、資料庫、FTP 伺服器, 等等。JMeter ...
  • 基於java的職工管理系統設計與實現,員工管理系統,企業員工管理系統,公司員工管理系統,企業人事管理系統,基於java職工管理系統,前後端分離,員工考勤管理系統,職工獎懲管理系統,職員合同管理,HR管理系統,人事HR管理系統。 ...
  • Author Alex Zhang Category SpreadJS Tags SpreadJS,前端電子錶格,實時數據,RealTime Data 前言 數據(包括股票、天氣和體育比分)在不斷更新為新信息時最為有用。SpreadJS是一個非常通用的 JavaScript 電子錶格組件,它還可以輕 ...
  • C語言教程——翁凱老師、赫斌 翁愷老師是土生土長的浙大碼農,從本科到博士都畢業於浙大電腦系,後來留校教書,一教就是20多年。 翁愷老師的c語言課程非常好,講解特別有趣,很適合初學者學習。 郝斌老師的思路是以初學者的思路來思考的,非常適合小白,你不理解的問題,基本上他都會詳細說一下。 C++——侯捷 ...
  • 前言: 自從使用了 AsyncLocal 後,就發現 AsyncLocal 變數像個臭蟲一樣,在有 AsyncLocal 變數的線程中啟動的 Task 、或者 Thread 都會附帶 AsyncLocal 變數。 在項目使用 AsyncLocal 實現了全局、局部 工作單元 ,但是就無法在後續作業中 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...