一、SQLite特性须知
1、 数据库大小限制
数据库大小被限制在 2TB(241 bytes). 这是理论限制。事实上,你应该把 SQLite数据库的大小限制在100GB以下,以免出现运行性能上的问题。如果你需要储存100GB或更多数据在一个数据库中, 考虑使用为此而设计的企业版数据库吧。原文见:SQLite FAQ中文版 第10 问 《SQLite数据库是否有已知的大小限制?》http://sqlitecn.org/faq.html#q10
2、 是否支持二进制存储
SQLite 3.0 版支持在任何字段存放 BLOB 数据,不管字段声明为什么类型。原文见:SQLite FAQ中文版 第12 问 《SQLite是否支持 BLOB 类型?》http://sqlitecn.org/faq.html#q12 SQLite数据类型:http://hi.baidu.com/weiyousheng/blog/item/d4b5d7d64766652807088b04.html
3、 对事务处理
支持
4、 多线程
SQLite对于整个数据库文件进行读取/写入锁定. 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作. 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分. 对于大多数情况这不算是什么问题. 在这些情 况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒. 但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的 解决方案了.
参考资料:SQLite FAQ中文版 第7问 《多个应用程序或者同一个应用程序的多个例程能同时存取同一个数据库文件吗?》
第8问 《SQLite是线程安全的吗?》
5、 安全
支持密码登录。设置登录密码后,数据库文件内容将进行加密,用文本工具查看显示的是乱码;否则,将会看到表的创建SQL语句等信息。
资料:《SQLite 数据库加密的一种解决方案》http://www.sqlite.com.cn/MySqlite/3/253.Html
6、 索引
支持
二、关于登录密码的问题
1、 用界面操作软件新建数据库时,输入密码,例如:123,进入系统进行操作。但用程序访问时,无论是在连接字符串中加入“Password=123”或用Connection.SetPassword(123)均无法打开数据库
2、 用程序创建数据库时设定密码
若连接字符串指定数据库不存在,且New=true,则会自动创建数据库。可用Connection的SetPassword属性设定密码。但同样问题,用界面操作软件将无法打开此数据库
解决方法:(感觉这法子笨了点,大家若有好的办法还请不吝赐教)
1、 用界面操作软件创建数据库,进行相应操作,如表结构创建,字典信息录入
2、 程序使用时:初次使用,先用Connetion.ChangePassword设定密码。以后所有操作请求均需带上密码。
3、 若需对数据库结构进行调整。可用ChangePassword方法,将密码设为空;然后用界面操作软件即可打开此数据库。
注:ChangePassword方法需在Connection Open后才能执行,也就是说想改密码必须知道原始密码
三、界面操作软件
SQLite2009 Pro Enterprice Manager [SQLite v3.6.11]