SQLite是一個開來源資料庫,現在已變得越來越流行,它的體積很小,被廣泛應用於各種不同類型的應用中。
什麼是SQLite?
SQLite的官方網站上是這樣定義SQLite的:
SQLite是一個軟體庫,用於實現自包含、非服務式、零配置、事務化的SQL資料庫引擎。
SQLite 是一個嵌入式SQL資料庫引擎,與其它大多數SQL資料庫不同的是,SQLite沒有獨立的服務進程。SQLite直接讀寫原始的磁碟檔案,一個擁有多個 表、索引、觸發器和視圖的完整SQL資料庫就包含在一個獨立的磁碟檔案中。資料庫檔案的格式是跨平台的,你可以在32位和64位系統之間、甚至在Big-Endian和Little-Endian(譯者註:這是兩種不同的位元組排序方式,Big-Endian是指一個word中的高位Byte是放在記憶體word地區的低地址處,而Little-Endian則與之相反)兩種不同的架構間自由地拷貝資料庫,這一特性讓SQLite成為應用檔案格式的一種流行選擇。SQLite不能替代Oracle,但可以考慮作為fopen()的替代方法。
SQLite已經是世界上布署得最廣泛的SQL資料庫引擎,被用在無以計數的案頭電腦應用中,還有消費電子裝置中,如行動電話、掌上型電腦和MP3播放器等。SQLite的源碼就放在公有領域(即WikiPedia的public domain)中。
SQLite最早是應用在Linux和OSX平台上的,但對資料庫需求較少的Windows應用而言,它是替代SQL Express和Access資料庫運行於.NET之上的一個可行且實用的選擇。
有一篇來自開發人員Mike Duncan的文章,給出了一個在3分鐘內就可將SQLite安裝到.NET上的指南。這個指南非常有用,讀完它你就可以使用一個輕量級的資料庫來處理你丟給它的許多任務。
3分鐘的指南
指南是從第一次下載SQLite開始的:
儘管你可以通過SQLite下載頁獲得Windows的通用庫,但我還是打算建議你從sourceforge擷取SQLite的ADO.NET 2.0資料提供者,我並不是說它是最高效的版本(它有一個ADO封裝層以及附帶的無用功能),但它確實是一個非常容易上手的版本,可能值得長期使用。
找出DLL:
將找到的DLL(System.Data.SQLite.DLL)拷貝到你的項目中,並添加引用。
下載和安裝一個SQLite GUI工具,SQLiteMan有一個非常出色的windows版本,指南上是這樣說的:
我一直在使用的工具名為“SQLite Administrator”(很合適的名字,它是免費的!)有一個“甜點”——有著一個和Query Analyzer很像的介面。如果你有興趣的話,可以從這裡http://www.sqlite.org/cvstrac/wiki?p=ManagementTools找到一個很大的SQLite GUI用戶端列表。
指南的最後一步就是建立一個SQLite資料庫:
通過GUI,建立一個資料庫並隨意建立一個測試表,就會出現一個以.s3db為尾綴的單獨檔案。
一旦System.Data.SQLite.dll被引用為.NET項目的一部分,那就可以像在你的應用頂部寫using System.Data.SQLite那樣容易地使用它。通過使用ADO.NET封裝層,一個參數化的查詢看上去會像是這樣:
string lookupValue;
using (SQLiteCommand cmd = cnn.CreateCommand())
{
for (int i = 0; i < 100; i++)
{
lookupValue = getSomeLookupValue(i);
cmd.CommandText = @"UPDATE [Foo] SET [Value] = [Value] + 1
WHERE [Customer] LIKE '" + lookupValue + "'";
cmd.ExecuteNonQuery();
}
}
資料提供者
SQLite已經實實在在地影響到.NET的開發,已經有很多資料提供器被用於流行的對像關係映射(O/RM, 即Object-Relational Mapper)架構中。
- SQLite NHibernate Provider
- SQLite Subsonic Provider
- SQLite LINQ Provider
LINQ提供器允許.NET 3.5的開發人員們利用新LINQ架構的優勢,並以SQLite作為後端資料存放區。
SQLite可以作為替代Access或SQL Express讓資料庫應用快速建立和運行起來的一個不錯選擇,而且因為資料庫還可以同時在Linux和Mac OSX平台上使用,所以建立一個可以跨平台使用的資料庫應用很容易。
查看英文原文:Up and Running with SQLite on .NET in 3 Minutes