1. 程式人生 > >Linux下SQLite3的移植與使用

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); }