[国嵌攻略][182][Sqlite嵌入式数据库移植]

数据库系统构成

在计算机系统中,保存数据的方式一般有两种:

1.普通文件方式

2.数据库方式

相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性。

 

数据库系统一般由三个部分构成

1.数据库

2.数据库管理系统

3.数据库访问应用

sqlite属于数据库管理系统。在数据库中,数据都是以表的形式存在。表与表之间,可能存在关系。sql(结构化查询语言),是一种特殊的编程语言,用于访问数据库中的数据。

 

移植sqlite到开发板

1.解压

tar zxvf sqlite-autoconf-3070800.tar.gz

2.配置

mkdir _install

./configure –-host=arm-linux –-prefix=${PWD}/_install

3.修改Makefile

搜索-DPACKAGE_STRING=\"sqlite\ 3.7.8\"

删除3.7.8路径前空格,-DPACKAGE_STRING=\"sqlite\3.7.8\"

4.编译

make

5.安装

make install

生成的sqlite数据库管理系统在_install/bin/目录下,拷贝到.../rootfs/sbin/目录下。

生成的库函数在_install/lib/目录下,拷贝到.../rootfs/lib/目录下。

 

编译数据库访问应用程序

arm-linux-gcc -L .../_install/lib -lsqlite3 -I .../_install/include db.c -o db

 

使用数据库访问程序

1.创建

./db student.db “create talbe stu(number smallint not null primary key, name varchar(20));”

2.插入

./db student.db “insert into stu values(1, ‘xiao ming’);”   字符串用单引号

./db student.db “insert into stu values(2, ‘xiao hong’);”   字符串用单引号

3.查询

./db student.db “select * from stu where name like %xiao%;”

4.删除

./db student.db “delete from stu where number = 2;”

 

db.c

#include <stdio.h>
#include <sqlite3.h>

int main(int argc, char **argv);
static int callback(void *notUsed, int argc, char **argv, char **colName);

int main(int argc, char **argv){
    //检测参数项
    if(argc != 3){
        printf("Usage:\n\t%s <database> <sql statement>\n", argv[0]);
        return -1;
    }
    
    //打开数据库
    sqlite3 *db;
    int isErr;
    
    isErr = sqlite3_open(argv[1], &db);
    if(isErr){
        //显示错误值
        printf("Can not open: %s", sqlite3_errmsg(db));
        
        //关闭数据库
        sqlite3_close(db);
        
        return -1;
    }
    
    //访问数据库
    char *errMsg;
    int isExec;
    
    isExec = sqlite3_exec(db, argv[2], callback, 0, &errMsg);
    if(isExec != SQLITE_OK){
        //显示错误值
        printf("Can not exec: %s", errMsg);
        
        //关闭数据库
        sqlite3_close(db);
        
        return -1;
    }
    
    //关闭数据库
    sqlite3_close(db);
    
    return 0;
}

static int callback(void *notUsed, int argc, char **argv, char **colName){
    //显示回调数据
    int i;
    char *value;
    
    for(i = 0; i < argc; i++){
        printf("%s ", argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    
    return 0;
}

 

posted @ 2016-04-06 20:44  盛夏夜  阅读(631)  评论(0编辑  收藏  举报