標籤:design his 刪除 blog 連結 nload attach doc nts
原文:Sqlite在.NET下的使用和Sqlite資料庫清理
Sqlite 是一款輕量級的關係型資料庫,她的好處我就不詳細道來了。本文的初衷是為.net平台的使用者提供協助。
Sqlite有專門為VS2010開發的程式包,大家可以到System.Data.SQLite Download Page 下去下載,注意是:This is the only setup package that is capable of installing the design-time components for Visual Studio 2010.
安裝後,在VS2010中建立數數庫連結就會看到有System.Data.SQLite的連結,在這裡你可以建立和開啟Sqlite資料庫:
在sqlite連結中,你可以為你的sqlite資料庫設定密碼和其他配置。確定後,會產生一個沒有副檔名的資料檔案。
大家一般都瞭解到,sqlite資料檔案是.db或.sqlite或其他擴充結尾,而用VS2010建立的sqlite資料庫檔案是沒有副檔名的,並且其加密能力特別高,一般的sqlite程式在沒密碼的情況下,很難開啟。
用VS2010建立sqlite資料庫後,就可以像操作sql server那樣操作sqlite,如:建表,查詢等都非常方便,感興趣的可以嘗試下,這裡就不一一說明了。
在項目,需要添加sqlite引用:System.Data.SQLite.dll和System.Data.SQLite.Linq.dll
Sqlite資料庫清理
最後,說明下SQLite的一個不好的地方,當資料庫中的一個或多個資料表存在大量的插入、更新和刪除等操作時,將會有大量的磁碟空間被已刪除的資料所佔用,在沒有執行VACUUM命令之前,SQLite並沒有將它們歸還於作業系統。
由於該類資料表中的資料存放區非常分散,因此在查詢時,無法得到更好的批量IO讀取效果,從而影響了查詢效率。
在SQLite中,僅支援清理當前串連中的主要資料庫,而不能清理其它Attached資料庫。VACUUM命令在完成資料清理時採用了和PostgreSQL相同的策略,即建立一個和當前資料庫檔案相同大小的新資料庫檔案,之後再將該資料庫檔案中的資料有組織的匯入到新檔案中,其中已經刪除的資料區塊將不會被匯入,在完成匯入後,收縮新資料庫檔案的尺寸到適當的大小。可以使用VACUUM的方法對sqlite資料庫進行清理:
SQLiteConnection sqlconn = new SQLiteConnection(@"Data Source=C:\cache;Version=3;Password=123"); sqlconn.Open(); SQLiteCommand sqlCom = sqlconn.CreateCommand(); sqlCom.CommandText = "VACUUM"; sqlCom.ExecuteNonQuery();
希望本文對你有所協助,Thank you!
Sqlite在.NET下的使用和Sqlite資料庫清理