arm板上sqlite3移植及使用

时间:2021-03-02 16:36:59

硬件平台:IMX6Q

内核版本:kernel3.0.35


移植到arm板

步骤:
1 下载源码 sqlite-3.6.16.tar.gz
2 编译源码,执行以下指令
    cp sqlite-3.6.16.tar.gz  /home/liuhaobi/sqlite3
    tar -zxvf sqlite-3.6.16.tar.gz
    cd /home/liuhaobi/sqlite3/sqlite-3.6.16
    ./configure  --host=arm-linux  --prefix=/home/liuhaobi/sqlite3
    make
    make install
    执行完以上指令后,在/home/liuhaobi/sqlite3目录下会生成bin、include、lib文件夹
    为了防止拷贝软链接文件的时候出错,将lib文件打包,执行
    cd /home/liuhaobi/sqlite3
    tar  -zcvf   lib.tar.gz    lib/
3 将可执行文件和库文件拷贝到arm板中
    将bin文件中的可执行文件sqlite3和lib.tar.gz拷贝到sd卡中,将sd卡插入到开发板上,执行以下指令
    cp  /sddisk/sqlite3  /bin
    cp  /sddisk/lib.tar.gz   /opt
    cd /opt
    tar   -zxvf   lib.tar.gz
    cp   lib/*   /lib  -rf
4 测试移植效果
   执行sqlite3,能进入sqlite命令行,即完成了移植


使用C语言操作SQLite数据库

1 新建数据库test.db
   sqlite3 *db = NULL;
   sqlite3_open("test.db",&db);
2 关闭数据库test.db
   sqlite3_close(db);
3 数据库报错信息输出
   sqlite3_errmsg(db);
4 新建数据库表
   char *zErrMsg;
   char *sql = " CREATE TABLE my_table (ID INTEGER PRIMARY KEY,SersorID INTE    GER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);";
   sqlite3_exec(db,sql,0,0,&zErrMsg);
5 插入数据
   sql = "INSERT INTO \"my_table\" VALUES(NULL,1,1,'20061685',18.9)";
   sqlite3_exec(db,sql,0,0,&zErrMsg);
6 查询数据
   int nrow = 0,ncolumn = 0;
   char **azResult;    //二维数组用于存放结果
   char *sql = "SELECT * FROM my_table";
   sqlite3_get_table(db,sql,&azResult,&nrow,&ncolumn,&zErrMsg);
   sqlite3_free_table(azResult); //将缓冲区数据清除
7 删除数据
    char *sql = "DELETE FROM my_table WHERE SersorID = 1;";
    sqlite3_exec(db,sql,0,0,&zErrMsg);
8 更新数据
   char *sql = "UPDATE my_table set SersorID = 5;";
   sqlite3_exec(db,sql,0,0,&zErrMsg);

具体实例可参考 sqlite3_test.tar
执行顺序opendbsqlite->insert->query->delete->update

注意:编译的时候要加上库路径和头文件路径,不然会报错
arm-linux-gcc  insert.c  -o  insert_arm  -lsqlite3  -I/home/liuhaobi/sqlite3/include  -L/home/liuhaobi/sqlite3/lib