1. 程式人生 > >C#資料本地儲存方案之SQLite

C#資料本地儲存方案之SQLite

即使是做網路應用,在斷線情況下,也需要考慮資料的本地儲存。在SQLite出現之前,資料量大的情況下,我們一直使用ACCESS,資料量小,則檔案儲存。ACCESS不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。

一:安裝

SQLITE,是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)。下載完畢是一個EXE,安裝後根目錄如下:

clip_image002

Bin下有一個測試工具,可以檢視本地執行SQLITE的各項效能指標。

二:新建資料庫

安裝完畢後,開啟visual studio,新建資料連線,可以看到資料來源多了一項SQLite。

clip_image004

新建連線,如下圖。SQLITE的資料庫,儲存後是一個檔案。

clip_image006

三:資料庫維護

可以在VS中方面的維護SQLITE資料,如下圖:

clip_image008

可以在VS中使用類似SQL查詢分析器的功能,如下圖:

clip_image010

四:混合模式

安裝完畢,可以直接在專案集的引用中,多了

System.Data.SQLite

System.Data.SQLite.Linq

兩個程式集,由於http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程式集,是針對“v2.0.50727”版的執行時生成的,在沒有配置其他資訊的情況下,無法在 4.0 執行時中載入該程式集。故需要在App.config中配置如下引數。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

五:SQLiteHelper

最後,提供一個自己寫的SQLiteHelper:

using System;
using System.Collections.Generic;
using
System.Linq; using System.Text; using System.Data.SQLite; using System.Data; using System.Data.Common; namespace Com.Luminji.DataService.SQLHelpers { public class SQLiteHelper { /// <summary> /// ConnectionString樣例:Data Source=Test.db3;Pooling=true;FailIfMissing=false /// </summary> public static string ConnectionString { get; set; } private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Parameters.Clear(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 30; if (p != null) { foreach (object parm in p) cmd.Parameters.AddWithValue(string.Empty, parm); } } public static DataSet ExecuteQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { DataSet ds = new DataSet(); PrepareCommand(command, conn, cmdText, p); SQLiteDataAdapter da = new SQLiteDataAdapter(command); da.Fill(ds); return ds; } } } public static int ExecuteNonQuery(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteNonQuery(); } } } public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteReader(CommandBehavior.CloseConnection); } } } public static object ExecuteScalar(string cmdText, params object[] p) { using (SQLiteConnection conn = new SQLiteConnection(ConnectionString)) { using (SQLiteCommand command = new SQLiteCommand()) { PrepareCommand(command, conn, cmdText, p); return command.ExecuteScalar(); } } } } }
六:附註 SQLite官方網站: http://www.sqlite. org/ 時第一眼看到關於SQLite的特性。   1. ACID事務   2. 零配置 – 無需安裝和管理配置   3. 儲存在單一磁碟檔案中的一個完整的資料庫   4. 資料庫檔案可以在不同位元組順序的機器間自由的共享   5. 支援資料庫大小至2TB   6. 足夠小, 大致3萬行C程式碼, 250K   7. 比一些流行的資料庫在大部分普通資料庫操作要快   8. 簡單, 輕鬆的API   9. 包含TCL繫結, 同時通過Wrapper支援其他語言的繫結   10. 良好註釋的原始碼, 並且有著90%以上的測試覆蓋率   11. 獨立: 沒有額外依賴   12. Source完全的Open, 你可以用於任何用途, 包括出售它   13. 支援多種開發語言,C, PHP, Perl, Java, ASP .NET,Python

相關推薦

C#資料本地儲存方案SQLite

即使是做網路應用,在斷線情況下,也需要考慮資料的本地儲存。在SQLite出現之前,資料量大的情況下,我們一直使用ACCESS,資料量小,則檔案儲存。ACCESS不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。 一:安裝 SQLITE,是一

C# SQLite資料本地儲存方案

即使是做網路應用,在斷線情況下,也需要考慮資料的本地儲存。在SQLite出現之前,資料量大的情況下,我們一直使用ACCESS,資料量小,則檔案儲存。ACCESS不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。powered by 25175.net

Android五種資料儲存方式SQLite資料庫儲存 載入SD卡資料庫 sql操作 事務 防止SQL注入

資料庫 前言 資料庫儲存 資料庫建立 內建儲存資料庫 外接儲存資料庫 編寫DAO 插入操作 更新操作 刪除操作 查詢操作

CocosCreatorKUOKUO帶你做主角資料本地儲存加拖尾加攝像機緩跟隨加無限地面-四合一教程

本次引擎2.0.5 編輯工具VSCode 目標1:本地儲存 新建個工程,加個單色背景,加個標籤,加兩個按鈕(文字為‘升級’和‘儲存’): 好了,讓我們新建個指令碼綁在Canvas上 main.js 在載入時獲取資料,如果沒有,給初始值。 給兩個按鈕寫方法:

Spark專案實戰-資料傾斜解決方案原理以及現象分析

一、資料傾斜的原理 在執行shuffle操作的時候,大家都知道是按照key來進行values的資料的輸出、拉取和聚合的。同一個key的values,一定是分配到一個reduce task進行處理的。假設多個key對應的values,總共是90萬。但是問題是可能某個key對應

Spark專案實戰-資料傾斜解決方案將reduce join轉換為map join

一、reduce端join操作原理 二、map端join操作原理  三、適用場景 如果兩個RDD要進行join,其中一個RDD是比較小的。一個RDD是100萬資料,一個RDD是1萬資料。(一個RDD是1億資料,一個RDD是100萬資料) 其中一個RDD必須是比較

C資料結構-線性表單鏈表

線性表之單鏈表 單鏈表的設計之初,筆者在考慮一個首要的問題,就是單鏈表的節點是在插入的函式內部建立,還是在函式外部建立。考慮到使用者在插入的時候,變數生命週期的不確定性以及容易造成記憶體洩漏等問題,綜合考慮之下使用了內部建立節點的方式。筆者設計的單鏈表中包含了單鏈表的反轉和合並等有趣的操作,

C資料結構-線性表順序表

線性表之順序表 順序表使用C語言的原生陣列作為儲存結構,使用者指定陣列的大小,動態的申請堆空間。動態設計的好處比事先用巨集定義規定大小更加靈活,而且支援順序表的重置大小操作。使得使用順序表的人擁有更大的靈活性,節省執行記憶體。順序表結構體的定義使用了柔性陣列,這一點使得我們在操作順序表

Mybatis 只返回一條資料的解決方案 association、collection

:[StudentC{sid=14, sname='null', sage=null, saddress='null', classS=ClassS{id=345345345, className='二班', studentId=null, students=null}}, StudentC{sid=15,

spark 大型專案實戰(五十八):資料傾斜解決方案sample取樣傾斜key進行兩次join

當採用隨機數和擴容表進行join解決資料傾斜的時候,就代表著,你的之前的資料傾斜的解決方案,都沒法使用。 這個方案是沒辦法徹底解決資料傾斜的,更多的,是一種對資料傾斜的緩解。 原理,其實在上一講,已經帶出來了。 步驟: 1、選擇一個RDD,要用flatM

資料傾斜解決方案原理以及現象分析

資料傾斜 在任何大資料類的專案中,都是最棘手的效能問題,最能體現人的技術能力,最能體現RD(Research Developer,研發工程師)的技術水平。 資料傾斜 = 效能殺手 如果沒有豐富的經驗,或者沒有受過專業的技術培訓,是很難解決資料傾斜問題的 在執行shuff

深入剖析SRDF/Mtreo和MetroSync雙活資料中心儲存方案

      文章有彩蛋,集中精力就會發現;十多分鐘的短片濃縮了百萬IT技術人的身影。      

HDFS資料遷移解決方案DistCp工具的巧妙使用分析

前言 在當今每日資訊量巨大的社會中,源源不斷的資料需要被安全的儲存.等到資料的規模越來越大的時候,也許瓶頸就來了,沒有儲存空間了.這時候怎麼辦,你也許會說,加機器解決,顯然這是一個很簡單直接但是又顯得有些欠缺思考的辦法.無謂的加機器只會帶來無限上升的成本消耗,更好的辦法應該是做到更加精細化的資料

東湖行 | 優雲數智UMStor展示PB級資料儲存方案實力

在近日舉行的2018全球快閃記憶體技術峰會上,優雲數智攜旗下具有“CBA”氣息的儲存系統——UMStor來到武漢東湖之濱的光谷科技會展中心,向參會者展示PB級資料湖儲存方案實力。 資料流衝擊日益凸顯 100多年前,“千湖之地”武漢湖泊星羅棋佈,沙湖、東湖、白洋湖相通,因無

[C++] 資料儲存方式

C++中儲存方式是通過儲存持續性,連結性和作用域來描述的。 1.儲存持續性 儲存持續性是指變數在記憶體中保留的時間,C++中共提供了四種持續性: 1.自動儲存持續性:在函式中或程式碼塊中定義的變數,其儲存持續性為自動持續儲存; 2.靜態儲存持續性:在函式外定義

HTML 5 中WebStorage實現資料本地儲存

webstorage 分sessionStorage和localstorage,sessionStorage是臨時儲存,localStorage是永久儲存。 sessionStorage如果瀏覽器關閉了,資料就沒有了,而localStorage則不會。 sessionSto

iOS開發————資料本地化儲存方式Keychain

iOS的keychain服務提供了一種安全的儲存私密資訊(密碼,序列號,證書等)的方式,每個ios程式都有一個獨立的keychain儲存。相對於NSUserDefaults、檔案儲存等一般方式,keychain儲存更為安全,而且keychain裡儲存的資訊不會因App被刪除

資料儲存方案

 C++中,根據資料儲存在記憶體中的時間長短,分為四種不同的方案來儲存資料。 1.自動儲存持續性 2.靜態儲存持續性 3.執行緒儲存持續性(C++11),不介紹。 4.動態儲存持續性 ——————————————————————————————————————————

c資料結構線性表單鏈表(帶頭結點)基本操作

#include<stdio.h> #include<malloc.h> #define MAXSIZE 10 #define ElemType char #define OK 1 #define ERROR 0 typedef struct Nod

HTML5+的離線本地儲存方案

HTML5+的離線本地儲存有如下多種方案:HTML5標準方案:cookie、localstorage、sessionstorage、websql、indexedDBHTML5Plus擴充套件方案:plus.storage、plus.iocookie:體量最小,可以設定過期時間