Linux下SQLite3的移植与使用

2019-07-13 02:10发布

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 #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 ", sqlite3_errmsg(db)); exit(0); } else { //printf( "Opened database successfully "); } 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 " , nrow , ncolumn ); //printf( " The result of querying is : " ); 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); }