硬件平台: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);
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);
sqlite3_exec(db,sql,0,0,&zErrMsg);
6 查询数据
int nrow = 0,ncolumn = 0;
char **azResult; //二维数组用于存放结果
char **azResult; //二维数组用于存放结果
char *sql = "SELECT * FROM my_table";
sqlite3_get_table(db,sql,&azResult,&nrow,&ncolumn,&zErrMsg);
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);
sqlite3_exec(db,sql,0,0,&zErrMsg);
8 更新数据
char *sql = "UPDATE my_table set SersorID = 5;";
sqlite3_exec(db,sql,0,0,&zErrMsg);
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