一,安装编译,移植
1.首先下载sqlite源码包,sqlite-autoconf-3080403.gz下载地址:http://www.sqlite.org/download.html
2.解压
# tar zxvf sqlite-autoconf-3080403.gz
# cd sqlite-autoconf-3080403
3.新建两个文件夹用于编译不同版本
# mkdir sqlite-x86 sqlite-arm
4.先编译电脑版
# cd sqlite-x86/
# ../configure --prefix=/usr/local
# make
# make install
# ldconfig
由于库安装的路径可能不在系统的默认路径上,而引起出现”sqlite header and source version mismatch“这个错误,所以用ldconfig命令来解决。
如果不成功可以采用以下方法
解决方法:将安装目录/usr/local/lib里面的libsqlite3.so.0和libsqlite3.so.0.8.6复制到/usr/lib/i386-linux-gnu,替换原有文件。
检验是否安装成功
# sqlite3 -version
出现版本号就是已经成功,如下
# sqlite3 -version 3.8.4.3 2014-04-03 16:53:12 a611fa96c4a848614efe899130359c9f6fb889c3
5.编译ARM版
# cd ../sqlite-arm/
# ../configure CC=arm-linux-gcc-4.5.1 --host=arm-linux --prefix=/usr/local/arm/target
# make
# make install
经过上步所得到的文件已经可以放到ARM板上使用的了,但为了节省ARM板的存储空间,我们先对该文件瘦身,去掉没用的调试信息
# arm-linux-strip /usr/local/arm/target/lib/libsqlite3.so.0.8.6
# arm-linux-strip /usr/local/arm/target/lib/libsqlite3.so
# arm-linux-strip /usr/local/arm/target/bin/sqlite3把bin/sqlite3拷贝到ARM板上的根目录/bin下,把/lib下的libsqlite3.so.0.8.6
测试方法也是一样
# sqlite3 -version出现版本号就是已经成功了。
二,使用
PC和ARM方法一样
1.创建数据库,student.db
# sqlite3 student.db
已经存在则打开,还没存在就会创建并打开
打开后出现
sqlite version 3.8.4.3 2014-04-03 16:53:12 Enter ".help" for usage hints.
使用 .help 查看帮助, .quit退出
sql的指令格式
所有的sql指令都是以分号(;)结尾的。如果遇到两个减号(--)则代表注解,sqlite3会略过去。
2.建立表
sqlite> create table student(id,name,gender,age);
这里在数据库student.db里创建了一个表,名为student的表,包含元素,id,age, sqlite可以储存任何东西:文字、数字、大量文字,不用标识输入类型,它会在自动转换。这是它与其他数据库的一个很大区别。
语法为
- createtabletable_name(field1,field2,field3,...);
table_name是资料表的名称,fieldx则是字段的名字。
2. 建立索引如果资料表有相当多的资料,我们便会建立索引来加快速度。
这里例如以id为索引
sqlite> create index stu_id on student(id);这里创建了一个stu_id的索引,它为表student中的id作为索引
这个指令的语法为create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3会在针对该字段作查询时,自动使用该索引。这一切的操作都是在幕后自动发生的,无须使用者特别指令。
3.插入数据
sqlite> insert into student values(1,'li','man',23); sqlite> insert into student values(2,'lt','woman',22);
如果是空,则填 NULL;
4.查看数据
sqlite> select * from student; 1|li|man|23 2|lt|woman|22
*为查看条件,查看student全部内容
---------------------------------------------------------
sqlite> select name from student; li lt
查看所有的name
--------------------------------------------------------
select * from film limit 10;
只输出10个结果
--------------------------------------------------------
sqlite> select * from student where id=1; 1|li|man|23
查看id为1的所有结果
-------------------------------------------------------
sqlite> select * from student order by id;
以id为条件从小到大
-------------------------------------------------------
sqlite> select * from student where id<3;
列出所有id小于3所有内容
------------------------------------------------------
sqlite> select count(*) from student; 4
------------------------------------------------------
其他指令不详细写了,类似sql指令
三,QT调用
在工程文件.pro中加入
LIBS += -lsqlite3然后加入头文件
#include <sqlite3.h>
然后在.cpp文件中编写程序,
新建一个数据库db
sqlite3 *db;
sql指令
QString cmd="select * from student;";sqlite储存数据是以二维数组形式
定义用于装得到的数据有几行几列
int h,l;定义用于装返回的数据
char** result;打开一个数据库到db;
sqlite3_open("student.db",&db);
数据库调用函数
sqlite3_get_table(db,cmd.toAscii(),&result,&h,&l,NULL);
第一个参数为要操作的数据库,第二个为操作指令,第三装返回数据,第四个装得到数据的行,第五为列,第六为装错误信息
--------------------------------------------------------------------------------------------------------
然后释放内存
sqlite3_free_table(result);操作完了就关闭
sqlite3_close(db);电脑上编写的QT程序只要环境都搭建好了在ARM也是直接就可以使用