利用SQLite ADO.NET在.NET(C#)中使用SQLite數據庫

 一、關於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.38.0):http://sourceforge.net/project/showfiles.php?group_id=132486&package_id=145568

這個提供程序更重要的是提供了ADO.NET vNext支持:http://sqlite.phxsoftware.com/blogs/sqlite/archive/2006/09/06/1949.aspx

二、在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(’dotnetthink’,'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());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章