[转载]Sqlite在.NET下的使用和Sqlite数据库清理 - Johnny Li - 博客园

[转载]Sqlite在.NET下的使用和Sqlite数据库清理 – Johnny Li – 博客园.

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!

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏