
1、SQLite簡介
SQLite第一個(gè)Alpha版本誕生于2000年5月. 至今已經(jīng)有4個(gè)年頭了. 而在今年的5月SQLite也迎來了一個(gè)新的里程: SQLite 3. SQLite官方網(wǎng)站: http://www.sqlite.org/
2、SQLite類型
SQLite的數(shù)據(jù)類型
首先你會(huì)接觸到一個(gè)讓你驚訝的名詞: Typelessness(無類型). 對! SQLite是無類型的. 這意味著你可以保存任何類型的數(shù)據(jù)到你所想要保存的任何表的任何列中, 無論這列聲明的數(shù)據(jù)類型是什么(只有在一種情況下不是, 稍后解釋). 對于SQLite來說對字段不指定類型是完全有效的. 如:
Create Table ex1(a, b, c);
誠然SQLite允許忽略數(shù)據(jù)類型, 但是仍然建議在你的Create Table語句中指定數(shù)據(jù)類型. 因?yàn)閿?shù)據(jù)類型對于你和其他的程序員交流, 或者你準(zhǔn)備換掉你的數(shù)據(jù)庫引擎. SQLite支持常見的數(shù)據(jù)類型, 如:
CREATE TABLE ex2(
a VARCHAR(10),
b NVARCHAR(15),
c TEXT,
d INTEGER,
e FLOAT,
f BOOLEAN,
g CLOB,
h BLOB,
i TIMESTAMP,
j NUMERIC(10,5)
k VARYING CHARACTER (24),
l NATIONAL VARYING CHARACTER(16)
);
前面提到在某種情況下, SQLite的字段并不是無類型的. 即在字段類型為”Integer Primary Key”時(shí).
SQLite支持SQL92 標(biāo)準(zhǔn)。
3、用.NET操作sqlite數(shù)據(jù)庫
System.Data.SQLite
是一個(gè)原始SQLite的加強(qiáng)版. 它將是一個(gè)原版的sqlite3.dll完全替代品 (你甚至就可以把它重命名為sqlite3.dll). 它不需要鏈接.NET 運(yùn)行時(shí),所以可以脫離.NET獨(dú)立發(fā)布, 然而它內(nèi)嵌了一個(gè)完整的 ADO.NET 2.0 引擎,為開發(fā)提供了完整的支持.
以下是它的特性簡介:
完整的 ADO.NET 2.0 實(shí)現(xiàn)
整個(gè)工程完全基于VS2005 和 ADO.NET 2.0全新構(gòu)建, 使用了全部的ADO.NET framework新特性. 包括完整的 DbProviderFactory 支持, 自動(dòng)的分布式事務(wù)調(diào)用, 廣泛的模式支持, 此外所有的類都是從 ADO.NET 2.0 的基類繼承下來的.
支持完整和精簡的 .NET Framework 以及 C/C++
這個(gè)庫不需要鏈接依賴.NET運(yùn)行時(shí),100%兼容原始的sqlite3.dll,可以使用非托管的C/C++ 進(jìn)行開發(fā).
可移植的數(shù)據(jù)庫文件
未加密的 SQLite 數(shù)據(jù)庫文件可以自由的跨平臺(tái)和處理器使用,包括非Windows平臺(tái). 加密之后的數(shù)據(jù)庫可以在全部Windows平臺(tái)上使用.
可以信賴的速度,比包括Sql Server Mobile 在內(nèi)的其它大多數(shù)嵌入式數(shù)據(jù)庫都要快速
SQLite'安裝所占用的空間相對于Sql Mobile可謂忽略不計(jì)了. 它在運(yùn)行的時(shí)候占用更少的內(nèi)存,同時(shí)生成的數(shù)據(jù)庫也更小.
數(shù)據(jù)庫加密
可以對整個(gè)數(shù)據(jù)庫文件進(jìn)行加密. 支持二進(jìn)制和明文的密碼.
支持使用Visual Studio 2005 設(shè)計(jì)
你可以向Server Explorer添加一個(gè)SQLite 連接, 使用查詢設(shè)計(jì)器創(chuàng)建處查詢語句, 向一個(gè)數(shù)據(jù)集中拖拽一個(gè)表格等等! SQLite的開發(fā)者可以在包括體驗(yàn)版在內(nèi)的各種Visual Studio 2005下工作.
單文件再發(fā)布包容量在400kb以下
將SQLite本身和ADO.NET 封裝捆綁編譯在一起. 預(yù)編譯的二進(jìn)制文件提供了 x86, IA64, x64 和ARM 的版本.
廣泛的SQL語言支持
SQLite 支持大部分的SQL92 標(biāo)準(zhǔn)(see below). 支持命名和未命名的參數(shù)以 UTF-8 和UTF-16 編碼通過優(yōu)化的管道傳入SQLite 內(nèi)核.
用戶自定義的函數(shù) 和 排序
全面支持用戶自定義函數(shù)和排序方式,意味著你可以用自己喜歡的.NET語言來實(shí)現(xiàn)SQLite沒有提供的特性. 這一切將非常的簡單.
提供了全部的源代碼. 100% 免費(fèi).
全部的封裝庫源代碼都是公有的. 無論是個(gè)人還是商業(yè)應(yīng)用都沒有任何的協(xié)議約束.
主頁地址:http://sqlite.phxsoftware.com/
4、SQLite的管理
管理工具也有不少,建議您使用sqlitemanager,用法酷像phpmyadmin.
可以到 http://sqlitemanager.sourceforge.net/下載 。
SQLite Query Analyzer Documentation :http://www.monkeyshinez.net/SQLiteQA
可惜作者沒有維護(hù)了,最新的可以參看這篇文章
SQLiteQA3: A SQLite Query Analyzer Clone for Visual Studio 2005 :http://www.eggheadcafe.com/articles/20060803.asp
管理SQLite數(shù)據(jù)庫的工具SQLite Developer你可以從http://www.sharpplus.com/免費(fèi)下載
5、SQLite 缺省情況下采用 Binary 方式比較字符串,因此我們使用
select * from [user] where [username] = 'Username1'
是找不出 [Username] = 'username1' 這樣記錄的。顯然,這和我們平常使用的 SQL 檢索有所區(qū)別。
解決方法:
創(chuàng)建數(shù)據(jù)庫時(shí),為目標(biāo)字段添加 "COLLATE NOCASE" 即可。
如:
CREATE TABLE [User]
(
[Username] TEXT NOT NULL COLLATE NOCASE
);
《轉(zhuǎn)》
批注:
1.SQLite開源、跨平臺(tái),所以很容易的移植到嵌入式設(shè)備上。
2.有了PHP,.NET等的支持可以取代Access在小型網(wǎng)站中作用。我最近就在寫一些SQLite的程序,歡迎討論。
posted on 2007-12-12 23:00
天下無雙 閱讀(7626)
評論(10) 編輯 收藏 引用 所屬分類:
C/C++ 、
嵌入式技術(shù) 、
Linux