C# SQLite資料本地儲存方案
即使是做網路應用,在斷線情況下,也需要考慮資料的本地儲存。在SQLite出現之前,資料量大的情況下,我們一直使用ACCESS,資料量小,則檔案儲存。ACCESS不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。powered by 25175.net
一:安裝
SQLITE,是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.net provider for the SQLite database engine)。下載完畢是一個EXE,安裝後根目錄如下:
498)this.width=498;" border=0>
Bin下有一個測試工具,可以檢視本地執行SQLITE的各項效能指標。
二:新建資料庫
安裝完畢後,開啟visual studio,新建資料連線,可以看到資料來源多了一項SQLite。
498)this.width=498;" border=0>
新建連線,如下圖。SQLITE的資料庫,儲存後是一個檔案。
498)this.width=498;" border=0>
三:資料庫維護
可以在Visual Studio中方面的維護SQLITE資料,如下圖:
498)this.width=498;" border=0>
可以在Visual Studio中使用類似SQL查詢分析器的功能,如下圖:
498)this.width=498;" border=0>
四:混合模式
安裝完畢,可以直接在專案集的引用中,多了
System.Data.SQLite
System.Data.SQLite.Linq
兩個程式集,由於http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程式集,是針對“v2.0.50727”版的執行時生成的,在沒有配置其他資訊的情況下,無法在 4.0 執行時中載入該程式集。故需要在App.config中配置如下引數。
- <?xmlversion="1.0"encoding="utf-8"?>
- <configuration
- <startupuseLegacyV2RuntimeActivationPolicy="true">
- <supportedRuntimeversion="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
- {
- publicclass SQLiteHelper
- {
- /// <summary>
- /// ConnectionString樣例:Datasource=Test.db3;Pooling=true;FailIfMissing=false
- /// </summary>
- publicstaticstring ConnectionString { get; set; }
- privatestaticvoid PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, paramsobject[] 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);
- }
- }
- publicstatic DataSet ExecuteQuery(string cmdText, paramsobject[] 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;
- }
- }
- }
- publicstaticint ExecuteNonQuery(string cmdText, paramsobject[] p)
- {
- using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
- {
- using (SQLiteCommand command = new SQLiteCommand())
- {
- PrepareCommand(command, conn, cmdText, p);
- return command.ExecuteNonQuery();
- }
- }
- }
- publicstatic SQLiteDataReader ExecuteReader(string cmdText, paramsobject[] p)
- {
- using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
- {
- using (SQLiteCommand command = new SQLiteCommand())
- {
- PrepareCommand(command, conn, cmdText, p);
- return command.ExecuteReader(CommandBehavior.CloseConnection);
- }
- }
- }
- publicstaticobject ExecuteScalar(string cmdText, paramsobject[] 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不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。powered by 25175.net
C#資料本地儲存方案之SQLite
即使是做網路應用,在斷線情況下,也需要考慮資料的本地儲存。在SQLite出現之前,資料量大的情況下,我們一直使用ACCESS,資料量小,則檔案儲存。ACCESS不支援事務原子性,在斷電情況下(這種情況總是會發生)會導致資料很難恢復。 一:安裝 SQLITE,是一
深入剖析SRDF/Mtreo和MetroSync雙活資料中心儲存方案
文章有彩蛋,集中精力就會發現;十多分鐘的短片濃縮了百萬IT技術人的身影。
CocosCreator之KUOKUO帶你做主角資料本地儲存加拖尾加攝像機緩跟隨加無限地面-四合一教程
本次引擎2.0.5 編輯工具VSCode 目標1:本地儲存 新建個工程,加個單色背景,加個標籤,加兩個按鈕(文字為‘升級’和‘儲存’): 好了,讓我們新建個指令碼綁在Canvas上 main.js 在載入時獲取資料,如果沒有,給初始值。 給兩個按鈕寫方法:
東湖行 | 優雲數智UMStor展示PB級資料湖儲存方案實力
在近日舉行的2018全球快閃記憶體技術峰會上,優雲數智攜旗下具有“CBA”氣息的儲存系統——UMStor來到武漢東湖之濱的光谷科技會展中心,向參會者展示PB級資料湖儲存方案實力。 資料流衝擊日益凸顯 100多年前,“千湖之地”武漢湖泊星羅棋佈,沙湖、東湖、白洋湖相通,因無
C語言資料型別儲存位置及堆疊說明
一、預備知識—程式的記憶體分配一個由C/C++編譯的程式佔用的記憶體分為以下幾個部分1、棧區(stack) 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2、堆區(heap) 般由程式設計師分配釋放, 若程式設計師不釋放
HTML 5 中WebStorage實現資料本地儲存
webstorage 分sessionStorage和localstorage,sessionStorage是臨時儲存,localStorage是永久儲存。 sessionStorage如果瀏覽器關閉了,資料就沒有了,而localStorage則不會。 sessionSto
資料庫SQLite 資料大量儲存 和快速讀取 連結串列查詢的優化 使用gosn
使用gson 將連結串列儲存的優化轉化: private Gson gson = new Gson(); private void readStr(){ List<Contacts
資料的儲存方案
C++中,根據資料儲存在記憶體中的時間長短,分為四種不同的方案來儲存資料。 1.自動儲存持續性 2.靜態儲存持續性 3.執行緒儲存持續性(C++11),不介紹。 4.動態儲存持續性 ——————————————————————————————————————————
HTML5+的離線本地儲存方案
HTML5+的離線本地儲存有如下多種方案:HTML5標準方案:cookie、localstorage、sessionstorage、websql、indexedDBHTML5Plus擴充套件方案:plus.storage、plus.iocookie:體量最小,可以設定過期時間
localStorage相容IE系列的本地儲存方案
1、 你知道什麼是localStorage 2、 你需要一個相容IE系列的本地儲存方案(不考慮低版本IE的請飄過或直接看二次包裝) 相容方案效果: 所有主流瀏覽器支援以下方法和屬性: window.localStorage 的 getIt
TableStore: 海量結構化資料分層儲存方案
前言 表格儲存是阿里雲自研分散式儲存系統,可以用來儲存海量結構化、半結構化的資料。表格儲存支援高效能和容量型兩種例項型別。高效
prometheus基於influxdb的監控資料持久化儲存方案
用prometheus在線上跑了兩年了,都是用的本地磁碟做資料儲存,磁碟空間有限,當空間不足時直接刪除資料檔案。近期監控系統正式上
本地儲存動態請求的資料
儲存的時候要在wx.request中儲存; data: { useInfo: [] }, var that = this; wx.request
egret 本地儲存資料
通過 egret.localStorage.setItem(key,value); 可以實現本地儲存資料,類似於cookie 儲存 let key:string = "data_name"; let value:string = "data_value"; egret.
Android資料儲存方案
android內建資料庫——SQLLite 概述SQLite SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能
C++檢視資料儲存大小端模式
所謂的大端模式,是指資料的低位儲存在記憶體的高地址中,而資料的高位,儲存在記憶體的低地址中; 所謂的小端模式,是指資料的低位儲存在記憶體的低地址中,而資料的高位儲存在記憶體的高地址中。 舉個例子,16bit的short型別整數0x1234,會佔用兩個大B(Byte位元組),即兩個記憶體單
【C++學習筆記】三、C++的資料型別、儲存以及基本運算
本文記錄了C++中的資料型別以及基本運算,這部分是典型的每次記每次忘型別,所以烙印在此,以便用時隨時查閱。 主要參考:http://www.runoob.com/cplusplus/cpp-data-types.html 1. C++中的資料型別 (1)基本型別 C++ 為程式
HBase實戰 | 從MySQL到HBase:資料儲存方案轉型的演進
一.叢集化方案 1.MySQL應用的演化 MySQL與HBase說到最核心的點,是一種資料儲存方案。方案本身沒有對錯、沒有好壞,只有合適與否。相信多數公司都與MySQL有著不解之緣,部分學校的課程甚至直接以SQL語言作為資料庫講解。我想借自身經歷,先來談談MySQL應用的演化。
javascript本地快取方案-- 儲存物件和設定過期時間
cz-storage 解決問題 1. 前端js使用localStorage的時候只能存字串,不能儲存物件 cz-storage 可以儲存 object undefined number string 2. localStorage沒有過期時間 cz-storage 可以設定以天為單位的過期時間 安裝