Sqlite 嵌入式数据库移植和使用
1. 源代码的获取
sqlite是一个功能强大、体积小运算速度快的嵌入式数据库,采用了全C语言封装,并提供了八十多个命令接口,可移植性强,使用方便。
下载地址:http://sqlite.org/download.html
sqlite源代码:sqlite-3.6.17.tar.gz
2. sqlite移植到x86 for linux
l 解压文件
//创建一个文件夹,将源代码放在这个文件夹中。
mkdir /work/sqlite
cp sqlite-3.6.17.tar.gz /work/sqlite
//解压文件
cd /work/sqlite
tar xvzf sqlite-3.6.17.tar.gz
l 配置
//建立x86目录
mkdir sqlite_x86
//打开文件
cd sqlite-3.6.17
//配置sqlite
./configure --prefix=/work/sqlite/sqlite_x86 --disable-tcl
l 编译
make
l 安装
make install
l 测试
当安装完成以后,安装文件会安装在/work/sqlite/sqlite_x86目录中,一种产生了,lib,include和bin三个文件夹,分别是库文件,头文件和可执行文件。
到这里是不是有点跃跃欲试了,是的,我们可以测试sqlite了,当文件安装后,我们可以直接通过安装好的sqlite3来实现。
cd sqlite_x86/bin
./sqlite3 test.db //打开或创建test.db数据库文件
create table test (id integer primary key, value text); //创建表格和字段名
insert into test (value) values('hxl'); //添加一条数据
insert into test (value) values('sqlite'); //添加一条数据
insert into test (value) values('test'); //添加一条数据
insert into test (value) values('for'); //添加一条数据
insert into test (value) values('linux'); //添加一条数据
//到此数据库基本家里就完成了,来看看数据库里面的文件吧
.mode col
.headers on //打印出数据库的表头
select * from test; //显示数据库中的所有文件
.exit //退出
3. sqlite移植到arm
l 配置
//建立x86目录
mkdir ../../sqlite_arm
//打开文件
cd ../../sqlite-3.6.17
//配置sqlite
./configure --prefix=/work/sqlite/sqlite_arm --disable-tcl —host=arm-linux
l 编译
make
l &
相关文档:
SQLite和其他大部分现代SQL数据库在基本设计目标上是不同的,它的目标是简单。SQLite遵循这一目标,即使这样偶尔会导致某些特性实现的低效化。下面列举了SQLite的一些缺陷:
SQL-92特性方面
正如前面提到的,SQLite不支持SQL-92的在很多企业数据库系统中可用的一些特性。
如:
外键约束(可解析的,但非强制)
很多ALT ......
主要通过pragma指令来实现。
比如: 空间释放、磁盘同步、Cache大小等。
不要打开。前文提高了,Vacuum的效率非常低!
PRAGMA auto_vacuum;
PRAGMA auto_vacuum = 0 | 1;
查询或设置数据库的auto-vacuum标记。
正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以 ......
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比 ......
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
// sqlite解决中文路径问题,以前研究sqlite时候遇到的中文路径问题的解决方法
// AnsiString cb中的字符串类,其它编译器用std::string替换即可.
// MultiByteToWideChar是windows api
AnsiString fileName;
int strSize = fileName.Length();
char *ansi = new char[strSize+1];
wchar_t *unico ......