標籤:
在 .NET 裡面使用 SQLite, 我這裡使用的wrapper是 System.Data.SQLite,它只需要一個dll,介面符合ADO.Net 2.0的定義,效能也不錯,NHibernate用的也是它,目前支援ADO.NET 3.5了,支援整合在 VS2005 和 VS2008裡面,而且支援wince,是個亮點
因為符合ADO.NET的規範,所以使用方式,基本和 SqlClient, OleDb等原生的一致
using System.Data; using System.Data.SQLite; //...
using (SQLiteConnection cn = new SQLiteConnection( "Data Source=Test.db3;Pooling=true;FailIfMissing=false") )
//Pooling設定為true時,SQL串連將從串連池獲得,如果沒有則建立並添加到串連池中,預設是true。 //FailIfMissing預設為false,如果資料庫檔案不存在,會自動建立一個新的,若設定為true,將不會建立,而是拋出異常資訊。
{ //在開啟資料庫時,會判斷資料庫是否存在,如果不存在,則在目前的目錄下建立一個 cn.Open();
using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = cn;
//建立表,如果表已經存在,則報錯 cmd.CommandText = "CREATE TABLE [test] (id int, name nvarchar(20))"; cmd.ExecuteNonQuery();
//插入測試資料 for (int i = 2; i < 5; i++) { cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, ‘杜思波技術討論地區‘)", i); cmd.ExecuteNonQuery(); }
for (int i = 5; i < 10; i++) { cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, ‘English Test‘)", i); cmd.ExecuteNonQuery(); }
//讀取資料 cmd.CommandText = "SELECT * FROM [test]"; using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { Console.WriteLine("第{0} 條:{1}", dr.GetValue(0), dr.GetString(1)); } } } }
在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());
【轉載在 .NET 裡面使用 SQLite】