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數據庫清理