ByToradex
秦海1). 简介SQLite是包含在一个相对很小的C
程序库中的关系数据库管理系统,与其他数据库管理系统不同,SQLite
不是一个客户端/
服务器结构的数据库引擎,而是被集成在用户程序中。基于上述特性,SQLite
非常适合于在嵌入式系统中实现一个轻量级的数据库管理,本文就展示基于嵌入式Linux
和Qt GUI
开发一个SQLite
演示例程。
本文所演示的平台来自于Toradex Colibri iMX6 ARM
嵌入式平台,这是一个基于NXP iMX6 ARM
处理器,支持单核/
双核Cortex-A9
。
2. 准备a). Colibri iMX6 ARM
核心版配合ColibriEva Board载板,连接调试串口UART1
到开发主机方便调试。
b).
ColibriiMX6系统使用基于OpenEmbedded框架重新编译的集成Qt5.7 base
以及Qsqllite
支持的Toradex Linux image releaseV27
版本以及对应的SDK.
这个可以结合这里的说明自己进行编译,
也可以通过这里直接下载编译好的image
和SDK
文件,image
更新方法请参考这里。
c).
关于开发主机SDK
安装和Qtcreator
开发环境的配置请参考之前发布的《嵌入式Linux基于Qt开发GPIO应用一文》。
d).
演示程序使用的LCD
为10inch 18bit LVDS
屏幕,请参考这里修改配置uboot
显示分辨率。
3). QT演示程序开发本文演示应用程序思路为,每隔10s
读取当前系统时间以及CPU
核心温度,并选择可以将数据保存到SQLite
数据库中;同时程序可以查看当前数据库的数据条目。a). QT GUI
定义,如下所示说明如下:./
上面一组文本框和按键用于显示当前系统的时间和CPU
核心温度,每隔10s
刷新一次;点击 ”ADD”
按键可以将当前显示的数据保存到SQLite
数据库中。./
下面一组文本框和按键用于显示SQLite
数据库中的数据条目,”Previous” / “Next”
按键用于查看上一条/
下一条,”Delete”
按键用于删除当前条目,”Clear”
按键用于清除整个数据库。
b). SQLite
基本操作子程序在工程中创建了 “sqliteset.cpp”
和 “sqliteset.h”
两个文件用于定义一些SQLite
数据库的基本操作应用,具体代码如下:sqliteset.h -
https://github.com/simonqin09/QtSQLiteDemo/blob/master/sqliteset.hsqliteset.cpp -
https://github.com/simonqin09/QtSQLiteDemo/blob/master/sqliteset.cpp
主要定义了下面一些函数:---------------------------------------------------/*
创建Database */QSqlDatabase sql_create();/*
关闭database */void sql_close(QSqlDatabase DatabaseName);/*
创建database
表格 */QSqlQuery sql_create_table(QStringsql_table_keys);/*
插入数据到表格 */int sql_insert_data(QSqlQuery sql_table,QString data_string);/*
从表格删除数据 */int sql_delete_data(QSqlQuery sql_table,QString delete_string, int id);/*
清除整个表格 */int sql_clear_table(QSqlQuery sql_table,QString clear_string);/*
获取表格当前最大id */int sql_select_maxid(QSqlQuery sql_table,QString select_string);/* Colibri iMX6 CPU
核心温度读取 */QString temp_read();---------------------------------------------------
c).
主程序由 “mainwindow.h”
和“mainwindow.cpp”
组成,具体代码如下:mainwindow.h -
https://github.com/simonqin09/QtSQLiteDemo/blob/master/mainwindow.hmainwindow.cpp –
https://github.com/simonqin09/QtSQLiteDemo/blob/master/mainwindow.cpp
说明如下:./ MainWindow
主程序里面主要完成了一些初始化,创建数据库,如果数据库已经存在,则将最后一条数据显示在“Record Data”
部分;另外,设置Timer
,每隔10s
中获取系统时间和CPU
核心温度,并显示到 “Real-timeData”
部分。./ “ADD”
按键,点击动作响应,将当前获取的实时数据保存到数据库。./ “Previous”
按键,点击动作响应,显示上一条数据库数据信息,如果已经是第一条则无动作。./ “Next”
按键,点击动作响应,显示下一条数据库数据信息,如果已经是最后一条则无动作。./ “Delete”
按键,点击动作响应,删除当前条目数据,并将次条目后的所有条目id
序号减掉1
,保证数据库数据条目id
始终是连续的。./ “Clear”
按键,点击动作响应,将整个数据库数据清除。./
最后还有一个 “data_time_temp_refresh”
程序为计时器链接的10s
到时的响应程序,对采集数据进行刷新。
4). SQLite程序部署配置a).
将编译好的可执行程序 “qt-sqlite”
复制到Colibri iMX6
模块“/home/root”
目录下。
b).
配置SQLite
程序开机自启动./ qtdemo_x11.sh
,程序启动脚本文件https://github.com/simonqin09/QtSQLiteDemo/blob/master/qtdemo_x11.sh---------------------------------------------------$ cp qtdemo_x11.sh /usr/bin$ chmod +x qtdemo_x11.sh---------------------------------------------------
./ qtdemo_launch.service
,systemd
自启动配置文件https://github.com/simonqin09/QtSQLiteDemo/blob/master/qtdemo_launch.service---------------------------------------------------$ cp qtdemo_launch.service /etc/systemd/system/$ systemctl enable qtdemo_launch---------------------------------------------------
5). SQLite 示例程序演示a).
开机后,系统自动启动程序,如下所示
b).
一个演示操作视频请点击这里观看
6). 总结本文基于NXP iMX6
嵌入式平台在嵌入式linux
系统下测试SQLite
数据库应用。