当前位置:   article > 正文

linux内核数据库sqlite3的移植,linux内核数据库sqlite3的移植和简单操作

libsqlite3.so.0.8.6

SQLite的源代码是C,其源代码完全开放,是一个轻量级的嵌入式数据库。

SQLite有以下特性:

零配置一无需安装和管理配置;

储存在单一磁盘文件中的一个完整的数据库;

数据库文件可以在不同字节顺序的机器间自由共享;

支持数据库大小至2TB;

足够小,全部源码大致3万行c代码,250KB;

比目前流行的大多数数据库对数据的操作要快;

这个数据库操作比较简单,首先要安装数据库:

这个很简单,在http://www.sqlite.org/download.html这个sqlite主页的下载目录中找到对应的linux版本。下载完成后解压,执行里面的

configure。如图:

3267db6c4c6d3bed68910bc2fc96734e.png

执行完之后要执行 sudo make && make install

等待一段时间就可以安装完成。

完成以后看一下我们sqlite3的执行文件的路径在哪里如图:

41b1d210db9b0e7cd1e7cd7e043a6a7d.png

在/usr/local/bin目录里。

为了以后的方便,可以将该目录加入到环境变量里,先打开sudo vim /environment将路径加入到这里,如何将sqlite3 移植到开发板上呢?

1、去掉/root/sqlite3.3.6目录下的sqlite3的调示信息:(俗称瘦身)

#arm-linux-strip sqlite3

2、将sqlite3下载到开发板的/usr/bin目录:

在PC机的目录/usr/lib 中找到libsqlite3.so.0、libsqlite3.so.0.8.6这两个库文件,去掉调示信息后把它们复制到开发板的/usr/lib目录下:

arm-linux-strip libsqlite3.so.0       (/home/linux/sqlite/lib)

arm-linux-strip libsqlite3.so.0.8.6    (/home/linux/sqlite/lib)

cp  –arf  libsqlite3.so.0  libsqlite3.so.0.8.6  /usr/lib 加上arf的目的是将源库拷贝,千万别只拷贝个链接,那么就悲剧了。。。

经过以上步骤,开发板上就已经有了sqlite数据库。

sqlite的一些基本操作可以在网上找一下,SQL语句都是通用的,所以比较重要的是sqlite3特供的一些操作数据库的接口:

int   sqlite3_open(char  *path,   sqlite3 **db);

功能:打开sqlite数据库

path: 数据库文件路径

db: 指向sqlite句柄的指针

返回值:成功返回0,失败返回错误码(非零值)

int   sqlite3_close(sqlite3 *db);

功能:关闭sqlite数据库

返回值:成功返回0,失败返回错误码

const  char  *sqlite3_errmg(sqlite3 *db);

返回值:返回错误信息

gcc  -o  test  test.c  -lsqlite3

}

回调函数的定义:

typedef  int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);

}

功能:每找到一条记录自动执行一次回调函数

para:传递给回调函数的参数

f_num:记录中包含的字段数目

f_value:包含每个字段值的指针数组

f_name:包含每个字段名称的指针数组

返回值:成功返回0,失败返回-1

int   sqlite3_exec(sqlite3 *db, const  char  *sql,  sqlite3_callback callback, void *,  char **errmsg);

功能:执行SQL操作

db:数据库句柄

sql:SQL语句

callback:回调函数

errmsg:错误信息指针的地址

返回值:成功返回0,失败返回错误码

例如:定义一个回调函数,打印记录中所有字段的名称和值

int callback(void *para, intf_num, char **f_value, char **f_name)

{inti;

printf(“*****************************\n”);for (i=0; i

{

printf(“%s : %s\n”, f_name[i], f_value[i]);

}return 0;

}

sqlite3 *db;char *errmsg;

……if (sqlite3_exec(db, “select * from table”, callback, NULL, &errmsg) !=SQLITE_OK)

{

printf(“error :%s\n”, errmsg);

exit(-1);

}

……

不使用回调函数执行SQL语句

int   sqlite3_get_table(sqlite3 *db, const  char  *sql,  char ***resultp,  int*nrow,  int *ncolumn, char **errmsg);

函数功能:执行SQL操作

函数参数:

db:数据库句柄

sql:SQL语句

resultp:用来指向sql执行结果的指针

nrow:满足条件的记录的数目

ncolumn:每条记录包含的字段数目

errmsg:错误信息指针的地址

返回值:成功返回0,失败返回错误码

sqlite3 *db;char *errmsg,**resultp;intnrow, ncolumn, i, j, index;

……if (sqlite3_exec(db, “select * from table”, &resultp, &nrow, &ncolumn, &errmsg) !=SQLITE_OK)

{

printf(“error :%s\n”, errmsg);

exit(-1);

}

index= ncolumn; //第一条记录的第一个字段的下标

for (i=0; i

{for (j=0; j

{

printf(“%s : %s\n”, resultp[j], resultp[index++]);

}

}

有了这几个函数,数据库的操作就基本上OK了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/173286
推荐阅读
相关标签
  

闽ICP备14008679号