• [国嵌攻略][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="sqlite3.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:
    	%s <database> <sql statement>
    ", 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("
    ");
        
        return 0;
    }
  • 相关阅读:
    set集合 浅层拷贝会和深层拷贝
    "is"与"=="
    元组和字典
    运算符和列表
    Python 基础语法
    supervisor 安装配置详解
    如何运行vue项目
    过目不忘JS正则表达式
    vue Bus总线
    Robot Framework 环境安装(一)
  • 原文地址:https://www.cnblogs.com/d442130165/p/5361054.html
Copyright © 2020-2023  润新知