一、關於SQLite ADO.NET
System.Data.SQLite
是一個原始SQLite的加強版. 它將是一個原版的sqlite3.dll完全替代品 (你甚至就可以把它重新命名為sqlite3.dll). 它不需要連結.NET 運行時,所以可以脫離.NET獨立發布, 然而它內嵌了一個完整的 ADO.NET 2.0 引擎,為開發提供了完整的支援.
以下是它的特性簡介:
完整的 ADO.NET 2.0 實現
整個工程完全基於VS2005 和 ADO.NET 2.0全新構建, 使用了全部的ADO.NET framework新特性. 包括完整的 DbProviderFactory 支援, 自動的分散式交易調用, 廣泛的模式支援, 此外所有的類都是從 ADO.NET 2.0 的基類繼承下來的.
支援完整和精簡的 .NET Framework 以及 C/C++
這個庫不需要連結依賴.NET運行時,100%相容原始的sqlite3.dll,可以使用非託管的C/C++ 進行開發.
可移植的資料庫檔案
未加密的 SQLite 資料庫檔案可以自由的跨平台和處理器使用,包括非Windows平台. 加密之後的資料庫可以在全部Windows平台上使用.
可以信賴的速度,比包括Sql Server Mobile 在內的其它大多數嵌入式資料庫都要快速
SQLite'安裝所佔用的空間相對於Sql Mobile可謂忽略不計了. 它在啟動並執行時候佔用更少的記憶體,同時產生的資料庫也更小.
資料庫加密
可以對整個資料庫檔案進行加密. 支援二進位和明文的密碼.
支援使用Visual Studio 2005 設計
你可以向Server Explorer添加一個SQLite 串連, 使用查詢設計工具建立處查詢語句, 向一個資料集中拖拽一個表格等等! SQLite的開發人員可以在包括體驗版在內的各種Visual Studio 2005下工作.
單檔案再發布包容量在400kb以下
將SQLite本身和ADO.NET 封裝捆綁編譯在一起. 先行編譯的二進位檔案提供了 x86, IA64, x64 和ARM 的版本.
廣泛的SQL語言支援
SQLite 支援大部分的SQL92 標準(see below). 支援命名和未命名的參數以 UTF-8 和UTF-16 編碼通過最佳化的管道傳入SQLite 核心.
使用者自訂的函數 和 排序
全面支援使用者自訂函數和排序方式,意味著你可以用自己喜歡的.NET語言來實現SQLite沒有提供的特性. 這一切將非常的簡單.
提供了全部的原始碼. 100% 免費.
全部的封裝庫原始碼都是公有的. 無論是個人還是商業應用都沒有任何的協議約束.
首頁地址:http://sqlite.phxsoftware.com/
(最新版本1.0.66.0):http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/1.0.66.0/SQLite-1.0.66.0-setup.exe/download
二、在C#中使用SQLite
1、通過Add References引用SQLite ADO .NET安裝目錄的bin目錄下的System.Data.SQLite.DLL。
2、建立資料庫檔案:因為始終是個0位元組檔案,應該利用IO也可以(?!)。
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
3、串連資料庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(connectionString);
connectionString中包含了資料庫的一些配置資訊,比如資料庫檔案,資料庫開啟的密碼等,可以利用System.Data.SQLite.SQLiteConnectionStringBuilder來輔助建立connectionString
4、建立表、讀取資料等和Access或MS SQL沒多大區別了
//建立一個資料庫檔案
string datasource="h:/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//串連資料庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//設定密碼,SQLite ADO.NET實現了資料庫密碼保護
conn.ConnectionString = connstr.ToString();
conn.Open();
//建立表
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
cmd.CommandText=sql;
cmd.Connection=conn;
cmd.ExecuteNonQuery();
//插入資料
sql = "INSERT INTO test VALUES('ekinglong','mypassword')";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出資料
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());