標籤:blog ar io os 使用 sp on 檔案 資料
這裡只討論不安裝的情況,只在項目中引用Dll。
從 SQLite 官網中下載帶有 static 字樣的 zip 包,比如我下載的是 sqlite-netFx40-static-binary-Win32-2010-1.0.94.0.zip 。
解壓後可以得到不少檔案,其中也包含了安裝檔案 Install.exe,但是可以不安裝,如果要使用 SQLite,最少需要兩個 Dll:System.Data.SQLite.dll,SQLite.Interop.dll。如果需要用到 Linq 或 EntityFramework 的話,還需要 System.Data.SQLite.Linq.dll 和 System.Data.SQLite.EF6.dll。
不考慮 Linq 和 EntityFramework 的情況下,只需要引用 System.Data.SQLite.dll,然後保證在程式根目錄下可以找到 SQLite.Interop.dll即可。
在程式根目錄放置一個SQLite資料庫檔案(資料庫檔案路徑其實可以是任意的)。System.Data.SQLite 中提供了 SQLiteConnection,SQLiteCommand,SQLiteDataAdapter。
private void InitSqlite(){ SQLiteConnection conn = new SQLiteConnection ("Data Source=test.db3"); conn.Open(); var table = conn.GetSchema( "tables"); //擷取資料庫檔案中的表結構 TableDataGrid.ItemsSource = table.DefaultView; var cmd = new SQLiteCommand (@"select * from Demo", conn); SQLiteDataAdapter adapter= new SQLiteDataAdapter (cmd); DataSet ds = new DataSet (); adapter.Fill(ds); //擷取表的列結構,通過查詢所有來得到 ColumnDataGrid.ItemsSource = ds.Tables[0].DefaultView; cmd.Dispose(); conn.Close();}
同樣,執行建立資料庫的SQL語句也都是可以的
private void CreateTable(){ SQLiteConnection conn = new SQLiteConnection ("Data Source=test.db3"); conn.Open(); var sqlStr = @"create table Demo([Id] int IDENTITY (1,1) PRIMARY KEY,[Pinyin] varchar(50) null)" ; SQLiteCommand cmd= new SQLiteCommand (sqlStr,conn); cmd.ExecuteNonQuery(); cmd.Dispose(); conn.Close();}
SQLite資料庫壓縮和 MDB 資料庫一樣,SQLite 資料庫預設不會回收控制項,進行大量的資料刪除後,資料庫檔案的體積不會改變,要壓縮資料庫檔案,可以執行 VACUUM 命令。VACUUM 將會從頭重新組織資料庫。這將會使用資料庫有一個空的“自由鏈表”, 資料庫檔案也會最小。
private void Compact(){ SQLiteConnection conn = new SQLiteConnection ( "Data Source=test.db3"); conn.Open(); SQLiteCommand cmd = new SQLiteCommand( "VACUUM" , conn); cmd.ExecuteNonQuery(); cmd.Dispose(); conn.Close();}
C# 使用 SQLite 資料庫