您的位置:首页 > 数据库

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

2012-04-23 14:27 645 查看
1. 源代码的获取

sqlite是一个功能强大、体积小运算速度快的嵌入式数据库,采用了全C语言封装,并提供了八十多个命令接口,可移植性强,使用方便。

下载地址:http://sqlite.org/download.html

sqlite源代码:sqlite-3.6.17.tar.gz

2. sqlite移植到x86 for linux

2.l 解压文件

//创建一个文件夹,将源代码放在这个文件夹中。

mkdir /home/database

cp sqlite-3.6.17.tar.gz /home/database/

//解压文件

cd /home/database

tar xvzf sqlite-3.6.17.tar.gz



2.2配置

//建立x86目录

mkdir sqlite-ix86-linux

//打开文件

cd sqlite-3.6.17

//配置sqlite

./configure --prefix=/home/database/sqlite-ix86-linux --disable-tcl

2.3 编译

make

2.4安装

make install

2.5测试

2.5.1在/root/.bashrc文件中添加路径:

export PATH=/home/database/sqlite-ix86-linux/bin:$PATH

#sqlite3 -version

3.6.22

成功看到版本即认为是安装成功和路径设置成功

2.5.2 建立数据库

当安装完成以后,安装文件会安装在/home/database/sqlite-ix86-linux目录中,一种产生了,lib,include和bin三个文件夹,

分别是库文件,头文件和可执行文件。到这里是不是有点跃跃欲试了,是的,我们可以测试sqlite了,当文件安装后,

我们可以直接通过安装好的sqlite3来实现。

cd /home/database/sqlite-ix86-linux/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 //退出

2.5.3 在应用程序中测试,新建文件夹Test,把刚才生成的test.db拷贝进来,

新建文件sqliteTest.c,添加如下内容

==================sqliteTest.c=======================================

#include <stdio.h>

#include "sqlite3.h"//"sqlite3.h"

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

{

int i;

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

{

printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "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;

}

==================end of sqliteTest.c=======================================

编译:

gcc sqliteTest.c -lsqlite3 -L/home/database/sqlite-ix86-linux/lib -I/home/database/sqlite-ix86-linux/include

编译生成a.out

可能提示的错误:

1. Connot find -lsqlite3 则是-L路径没设对

2. error:sqlite3.h没找到

error:'sqlite3' undeclared(first use in this funtion)

则是-I路径没有设对设对

运行: ./a.out test.db "select * from test;"

显示如下:

root@xiangzi-desktop:/home/database/test# ./a.out test.db "select * from test"

id = 1

value = hxl

id = 2

value = sqlite

id = 3

value = test

id = 4

value = for

id = 5

value = linux

root@xiangzi-desktop:/home/database/test#

3. sqlite移植到arm

3.1 配置

//建立x86目录

mkdir /home/database/sqlite-arm-linux

//打开文件

cd /home/database/sqlite-3.6.17

//配置sqlite

./configure --prefix=/home/database/sqlite-arm-linux --disable-tcl --host=arm-linux

3.2 编译

make

3.3 安装

make install

3.4 测试

把上面那个测试程序修改编译器即可,省略...

================================================

参考:

1. Sqlite 嵌入式数据库移植和使用

http://bbs.ednchina.com/BLOG_ARTICLE_253793.HTM
2. Sqlite学习笔记

http://wanqiufeng.blog.51cto.com/409430/472905
3. 关于Sqlite3的使用

http://blog.sina.com.cn/s/blog_3f2fa9610100rq4t.html
4. 嵌入式数据库Sqlite移植教程

http://www.elecfans.com/emb/xitong/20100311186619.html
5. SQLite

http://www.helplib.net/s/sqlite/9/2.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: