原创 Sqlite 嵌入式数据库移植和使用

2009-8-19 21:03 3325 7 7 分类: MCU/ 嵌入式
 

1.    源代码的获取<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


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    安装


make install


l    测试


当安装完成以后,安装文件会安装在/work/sqlite/sqlite_x86目录中,一种产生了,lib,include和bin三个文件夹,分别是库文件,头文件和可执行文件。


将lib中的文件复制到开发板的lib中,现在编写一个C文件test.c来驱动它。


static int callback(void *NotUsed, int argc, char **argv, char **azColName)


{


int i;


for(i=0; i<argc; i++)


{


printf("%s = %s\n", azColName, argv ? argv : "NULL");


}


printf("\n");


return 0;


}


 


int main(int argc, char **argv)


{


sqlite3 *db;


char *zErrMsg = 0;


int rc;


if( argc!=3 )


{


fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);


}


rc = sqlite3_open(argv[1], &db);


if( rc )


{


fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));


sqlite3_close(db);


}


rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);


if( rc!=SQLITE_OK )


{


fprintf(stderr, "SQL error: %s\n", zErrMsg);


}


sqlite3_close(db);


return 0;


}


上面的代码是sqlite官方的测试代码,虽然很简单但是也很强大,一般应用都够了,再了解一下sqlite的语法就可以实现强大的功能了,编译方法如下,在这里假设你已经安装好了arm-linux-gcc,我采用的是arm-linux-gcc-4.3.2,编译方法如下:


arm-linux-gcc -o test test.c -sqlite3 -L/work/sqlite/sqlite_arm/lib -I/work/sqlite/sqlite_arm/include


将数据库复制在当前文件夹,测试方法:


./test ./test test.db "select * from test;"

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条