1. 程式人生 > >Sqlite在.NET下的使用和Sqlite數據庫清理

Sqlite在.NET下的使用和Sqlite數據庫清理

dex ndt connect attach lin .exe big sqli 下載

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