最近在网上也看了很多关于sqlite和sqlce的文章,也算是对他们的了解。这两者存在的意义,主要面向的是嵌入式数据库,当然你要是把他作为桌面小程序数据持久的工具,当然也不错。
在这里就不再说你为什么排除这两者之外其他的数据库了,可能是项目的原因;可能只是想给客户演示,不想搞的太大;背景有很多,在这里说他作为桌面小程序的数据库而存在,该如何选择。
据说sqlite比sqlce的速度很快很多,要4到5倍,但是我没做数据性的测试,但是肯定的是sqlite应该确实比sqlce快吧。sqlite的sql语法基本上还是和sqlserver的语法比较接近的,如果你有关系型数据库sql语法的经验,对于sqlite的sql掌握是很快的。对于sqlce来说,你就完全不用改变了,他和sqlserver的sql语法是一样的,都是微软的产品。
说到这里,如果你考虑以后程序的升级和扩展,数据库方面的话,从sqlce升级到sqlserver要比sqlite容易些,起码在使用sql的语法上不用怎么变动。但是话又说回来,不管你选择哪个要升级到sqlserver你的程序肯定多多少少要改变点的吧。
以下是个人的经验,sqlite和sqlce都没有架构的概念了,我说的是像sqlserver的dbo一样的架构。另外,sqlce也没有视图的概念了,但是在sqlite中可以存在视图。同时sqlite没有外键的概念,而sqlce和sqlserver一样存在外键,不过有的版本的sqlite管理工具给sqlite数据库弄了外键,不过我在使用的时候总是不好用对于外键。还有点很大的区别,sqlite和Oracle一样默认是区分大小写的,而sqlce默认不区分大小写和sqlserver一样,呵呵微软就是另类。如果你习惯sqlserver的话,在定义sqlite数据库结构时为了不区分大小写可以在ddl后加上collate nocase,如果你细心的话会发现sqlserver的ddl一样都加了collate Chinese......一长串,也是针对是否区分大小写、重音之类的。
还有就是对于这俩数据库的管理工具,sqlite的有很多,如sqliteadmin、sqliteExpertPers(个人版免费)、DatabaseNet等等,现在sqliteadmin基本上不再维护了,sqliteExpertPers也不错,界面很漂亮,但是个人版提供的功能还是太少了,风格也不太习惯。另外就是DatabaseNet,这家伙是针对各种数据库的管理工具,对sqlite和sqlce都支持,并且个人版提供的功能都还不错,操作风格非常像sqlserver的官方管理工具ssms,如果以前你经常使用ssms,DatabaseNet是不错的选择。
另外还要考虑,如果你是给客户做的项目,到客户那里维护的时候携带那种管理工具最方便,以上我说了3中工具,前两种基本上只带安装后的两个文件就可以了,DatabaseNet需要framework4.0以上的版本的,你要考虑客户机器的环境。
最后就是使用这两种数据库的发布,sqlite只需要引用一个dll即可,而sqlce发布是需要安装个sqlce的运行时环境,多这一点麻烦。
下载sqliteadmin 访问密码 19cb
SQLiteExpertPersSetup 访问密码 fbf5
-------------------------------------------以下2014-6-20
1.其实sqlite的datetime数据类型并不像网上说的那么玄,我指的是用C#引用官网sqlite访问驱动System.Data.sqlite.dll,参数形式写sql,其实不用考虑sqlite内部是什么形式保存方式。
2.sqlce和sqlite相比,sqlce没有事务处理方式,也即不存在事务。如果都是批处理方式,同样不加事务,那么sqlce比sqlite快大概8倍;如果使用事务处理,sqlite比sqlce快大概1倍。当然还要根据你处理这批数据的大小。