1.SQLite数据库的优势:
1.1 轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,利用SQLite一样只需要带上它的一个动态库。以版本为例,Windows下487KB、Linux下347KB。
1.2 绿软件
它的核心引擎本身不依托第三方的软件
1.3 单一文件
确实是数据库中所有的信息(比如表、视图、触发器、等)都包括在一个文件内。那个文件能够copy到其它目录或其它机械上,也照用不误。
CSV也是单一文件格式。它本身确实是用来表示二维的数据信息的。一个CSV文件能够明白得为数据库的一张表。CSV的缺点要紧在于:不便于存储非文本的数据信息(比如BLOB类型的信息);若是需要同时存储多张表的信息,就需要对应有多个CSV文件(文件一多,就嫌麻烦)
。
1.4 跨平台/可移植性
除主流操作系统,SQLite还支持了很多其他的操作系统。如对很多嵌入式系统(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。
Access数据库最要紧的缺点确实是不能跨平台。另外还有几个小缺点:文件大小有限制(2GB)、不支持内存数据库。
1.5 内存数据库(in-memory database)
现在内存愈来愈廉价,很多一般PC都开始以GB为单位来衡量内存(效劳器就更甭提了)。这时,SQLite的内存数据库特性就越发显得好用。SQLite的API不区分当前操作的数据库是在内存仍是在文件(关于存储介质是透明的)。因此若是你感觉磁盘I/O有可能成为瓶颈的话,能够考虑切换 为内存方式。切换的时候,操作SQLite的代码大体不用大改,只要在开始时把文件Load到内存,终止时把内存的数据库Dump回文件就OK了。
1.6 编程语言接口
由于SQLite本身是C写的,它自带的API也是C接口的。
2.SQLite数据库的缺点:
2.1并发访问的锁机制
SQLite在并发(包括多进程和多线程)读写方面的性能不太理想。数据库可能会被写操作独占,从而致使其它读写操作短时刻内阻塞。
2.2SQL标准支持不全
在它的上,具体列举了不支持哪些SQL92标准。
2.3网络文件系统(以下简称NFS)
有时候需要访问其它机械上的SQLite数据库文件,就会把数据库文件放置到网络共享目录上。当SQLite文件放置于NFS时,在并发读写的情形下可能会出问题(比如数据损坏)。缘故是由于某些NFS的文件锁实现上有Bug。
3.选择SQLite的缘故。
(1)嵌入式设备资源有限,SQLite占用内存和CPU资源都比较少。
(2)源代码开源,且利用完全免费。
(3)相关于其他大型数据库来讲移植相对照较方便。
(4)检索速度上,在小于十几兆或即便兆数据的检索速度上,SQLite的速度超过mySQL和Oracle等中型或大型数据库(当数据上G后,Oracle的检索速度最快,SQLite最慢)。
(5)尽管SQLite不支持多用户多进程同时读写数据库,可是该缺点在咱们的嵌入式设备上很少会发生。
4.利用方式概述。
4.1配置SQLite
在sqlite目录下进行如下配置:
.
access数据库用什么软件/configure --prefix=/QT/sqlite3 --disable-tcl --host=arm-none-linux-gnueabi
4.2编译
make
4.3安装
make install
该命令将编译好的文件安装到sqlite-arm目录下,在sqlite-arm目录下会生成bin、lib、include目录,bin目录下是sqlite3可执行文件,lib目录下包括运行sqlite3所依托的库,另外在编译,另外在编译sqlite应用程序时,必需指明所依托的头文件和库。
4.4去掉调试信息(可选)
文件编译后会产生许多调试信息,下载到开发板将会占用较多存储器。我在编译后lib目录下文件大小达到,占用了很多Flash,为减小Flash占用去掉没必要要的调试信息。在sqlite_arm目录下执行如下命令:
arm-linux-strip bin/*
arm-linux-strip lib/*
去掉调试信息后文件大小减小许多。将sqlite_arm /bin目录下的文件sqlite3拷贝到根文件系统的bin目录下,并将sqlite_arm/lib目录下的文件拷贝到根文件系统的lib目录下。
4.5测试
[root]#sqlite3
SQLite version ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table film (number,name);
sqlite> insert into film values (1,'aaa');
sqlite> insert into film values (2,'bbb');
sqlite> select * from film;
1|aaa
2|bbb
sqlite>.quit
[root]#
5.经常使用函数介绍:
最新版本的SQLite 提供的C 语言接口的函数已有一百五十个但核心函数是下面介绍的几个, 利用这几个函数就能够够实现有效的数据存储和治理。
5.1sqlite3_open()
打开数据库函数原型:
int sqlite3_open(
const char *filename, /* Database filename (UTF- 8) */
sqlite3 **ppDb /* OUT: sqlite db handle */
);
int sqlite3_open16(
const void *filename, /* Database filename (UTF- 16) */
sqlite3 **ppDb /* OUT: sqlite db handle */
);
int sqlite3_open_v2(
const char *filename, /* Database filename (UTF- 8) */
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论