西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程數(shù)據(jù)庫教程 → SQLite內(nèi)存數(shù)據(jù)庫

SQLite內(nèi)存數(shù)據(jù)庫

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/9/14 18:20:34字體大。A-A+

作者:佚名點擊:1461次評論:0次標簽: SQLite 數(shù)據(jù)庫

  • 類型:文件處理大。1.5M語言:中文 評分:3.1
  • 標簽:
立即下載

SQLite 介紹
一. SQLite 是實現(xiàn)了SQL 92標準的一個大子集的嵌入式數(shù)據(jù)庫.其以在一個庫中組合了數(shù)據(jù)庫引擎和接口,能將所有數(shù)據(jù)存儲于單個文件中而著名.我覺得SQLite的功能一定程度上居于MySQL 和PostgreSQL之間.盡管如此,在性能上面,SQLite常?2-3倍 (甚至更多).這利益于其高度調(diào)整了的內(nèi)部架構(gòu),因為它除去了服務(wù)器端到客戶端和客戶端到服務(wù)器端的通信。

二. 而令人印象深刻的特點是你可將你的整個數(shù)據(jù)庫系統(tǒng)放在其中.利用非常高效的內(nèi)存組織,SQLite只需在很小的內(nèi)存中維護其很小的尺寸,遠遠比其它任何數(shù)據(jù)庫系統(tǒng)都小.這些特點使得其成為在需要高效地應(yīng)用數(shù)據(jù)庫的任務(wù)中一個非常方便的工具.

SQLite 優(yōu)勢
一 . 除了速度和效率,SQLite還有其它好多的優(yōu)勢使得其能成為許多任務(wù)中一個理想的解決方案.因為SQLite的數(shù)據(jù)庫都是簡單文件,因此無須一個管理隊伍花時間來構(gòu)造復(fù)雜的權(quán)限結(jié)構(gòu)來保護用戶的數(shù)據(jù)庫.因為權(quán)限通過文件系統(tǒng)自動進行.這也同時意味著(數(shù)據(jù)庫空間的大小只與環(huán)境有關(guān),與本身無關(guān))無段特殊的規(guī)則來了解用戶磁盤空間.用戶可以從創(chuàng)建他們想要的任意多的數(shù)據(jù)庫和對其對這些數(shù)據(jù)庫的絕對控制權(quán)而得到好處.

二 . 數(shù)據(jù)庫就是一個文件的事實使用SQLite可以輕易地在服務(wù)器間移動.SQLite也除去了需要大量內(nèi)存和其它系統(tǒng)資源的伺候進程.即使當數(shù)據(jù)庫在大量地使用時也是如此.

創(chuàng)建內(nèi)存數(shù)據(jù)庫

1.由于業(yè)務(wù)的需要,我使用SQLite 內(nèi)存數(shù)據(jù)庫制作一個緩存,IIS 停止內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)全部丟失,不知道SQLite 是否可以做分布式的內(nèi)存數(shù)據(jù)管理。

2.添加System.Data.SqlClient引用,程序集請到這里http://sqlite.phxsoftware.com/ 下載

3.創(chuàng)建內(nèi)存數(shù)據(jù)庫 , Data Source=:memory:;Version=3; 這個連接字符串折騰了很久, 當然這里也可以使用文件來存儲數(shù)據(jù),只需要修改 Data Source=:memory: 為 Data Source= Cache.db 就ok !當然這個表需要在Global 里面創(chuàng)建

 代碼
SQLiteConnection conn = (SQLiteConnection)new SQLiteConnection("Data Source=:memory:;Version=3; Cache Size = 3000;New=True;Pooling=False;Max Pool Size=100;LongNames = 0; Timeout = 1000; NoTXN = 0; SyncPragma = NORMAL; StepAPI = 0");
conn.Open();
IDbCommand dbcmd = conn.CreateCommand();
//創(chuàng)建內(nèi)存表
string sql = "CREATE TABLE [AvTable] ( [ID] INTEGER PRIMARY KEY NOT NULL,[CityPair] VARCHAR(6) NULL,[FlightNo] VARCHAR(50) NULL,[FlightDate] VARCHAR(10) NULL,[CacheTime] VARCHAR(2000) NULL,[AVNote] VARCHAR(2000) NULL)";
dbcmd.CommandText = sql;
dbcmd.Connection = conn;
dbcmd.ExecuteNonQuery();
SQLiteConn = conn;
 

全局屬性,打開數(shù)據(jù)庫連接后創(chuàng)建好表后賦值給這個屬性,以后操作數(shù)據(jù)一致使用這個連接。

public static SQLiteConnection SQLiteConn { get; set; }
使用SQL 語句操作表如下, sql 是代表sql 語句

string sql = "Update AVTable Set CityPair='" + av.CityPair + "',CacheTime='" + DateTime.Now.ToString() + "',AVNote='" + av.AVNote + "' Where FlightNo='" + av.FlightNo + "' And FlightDate='" + av.FlightDate + "'";
IDbCommand dbcmd = MemoryDatabse.SQLiteConn.CreateCommand();
dbcmd.CommandText = sql;
dbcmd.Connection = MemoryDatabse.SQLiteConn;
int count = dbcmd.ExecuteNonQuery(); 

SQLite 的查詢語法 和 SQL SERVER 有一些區(qū)別 。

提取 avcache表 11-20 的數(shù)據(jù) 。

Select * From avcache Limit 9 Offset 10; 以上語句表示從avcache 表獲取數(shù)據(jù),跳過10行,取9行 。

另外一種寫法, 從10 開始提取 提取9條數(shù)據(jù) 。

select * from avcache limit10,9

語法

sql = "select * from avcache where "+條件+" order by "+排序+" limit "+要顯示多少條記錄+" offset "+跳過多少條記錄;

例子

select * from avcache limit 15 offset 20 意思是說: 從avcache 表跳過20條記錄選出15條記錄

由于最近工作需要開始學習SQLite ,寫的難免有些粗糙的地方,希望大家指正,提供更好的方法!

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    第 1 樓 北京開心網(wǎng) 網(wǎng)友 客人 發(fā)表于: 2011/6/9 15:04:32
    http://elephantinaurance.com/skin/fac/5.gif

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)