Linux下SQLite3的移植与使用

SQLite3是一个轻便的文件型数据库,非常适合在嵌入式环境使用
我所移植的环境是arm-xilinx-linux-gnueabi

一、准备SQLite3

SQLite3项目地址
https://www.sqlite.org/
下载source code中的sqlite-autoconf-xxx.tar.gz

二、编译

先为编译文件建立一个临时文件夹/alex/prefix/sqlite
解压源文件后后进入文件夹

./configure --host=arm-xilinx-linux-gnueabi --prefix=/alex/prefix/sqlite
make
make install

所有的库,头文件都可以在临时文件夹内找到,编译的时候注意包含路径

三、操作数据库

进入/alex/prefix/sqlite/bin运行

./sqlite3

即可进入数据库管理界面,这里可以新建数据库文件以及直接操作数据库。

下面是一个c调用sqlite的用例

#include <stdio.h>
#include "sqlite3.h"
int main(int argc, char* argv[])
{
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;

    char *ip = "";
    char *inputstring;

    rc = sqlite3_open("ssdb", &db);

    if (rc) {
        //printf( "Can't open database: %s\n", sqlite3_errmsg(db));
        exit(0);
    }
    else {
        //printf( "Opened database successfully\n");
    }


    int nrow = 0, ncolumn = 0;
    char **azResult; //指针数组存放结果  

    char *sql = "SELECT * FROM rule";
    sqlite3_get_table(db, sql, &azResult, &nrow, &ncolumn, &zErrMsg);

    int i = 0;
    //printf( "row:%d column=%d \n" , nrow , ncolumn );  
    //printf( "\nThe result of querying is : \n" );  

    int count = 0;

    printf("[");
    for (i = 1; i <= nrow; i++)
    {
        count = i*ncolumn;
        if (i != 1)
        {
            printf(",");
        }
        printf("{\"inner_mac\":\"%s\",", azResult[count++]);
        printf("\"inner_ip\":\"%s\",", azResult[count++]);
        printf("\"inner_port\":\"%s\",", azResult[count++]);
        printf("\"outer_mac_fake\":\"%s\",", azResult[count++]);
        printf("\"outer_ip_fake\":\"%s\",", azResult[count++]);
        printf("\"inner_mac_fake\":\"%s\",", azResult[count++]);
        printf("\"inner_ip_fake\":\"%s\",", azResult[count++]);
        printf("\"outer_mac\":\"%s\",", azResult[count++]);
        printf("\"outer_ip\":\"%s\",", azResult[count++]);
        printf("\"outer_port\":\"%s\",", azResult[count++]);
        printf("\"remark\":\"%s\",", azResult[count++]);
        printf("\"enable\":\"%s\"}", azResult[count++]);
    }
    printf("]");

    //释放掉 azResult 的内存空间  
    sqlite3_free_table(azResult);

    sqlite3_close(db);
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值