嵌入式Linux基于Qt开发SQLite应用

供稿:韬睿(上海)计算机科技有限公司

  • 关键词:ARM,Qt,SQLite
  • 摘要:SQLite 是包含在一个相对很小的C程序库中的关系数据库管理系统,与其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。基于上述特性,SQLite非常适合于在嵌入式系统中实现一个轻量级的数据库管理,本文就展示基于嵌入式Linux和Qt GUI开发一个SQLite演示例程

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 定义,如下所示

image001.png

说明如下:

./ 上面一组文本框和按键用于显示当前系统的时间和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.h

sqliteset.cpp - https://github.com/simonqin09/QtSQLiteDemo/blob/master/sqliteset.cpp


主要定义了一些基本操作函数,如创建数据库,创建表格,添加、删除数据等。


c). 主程序

由 “mainwindow.h” 和“mainwindow.cpp” 组成,具体代码如下:

mainwindow.h - https://github.com/simonqin09/QtSQLiteDemo/blob/master/mainwindow.h

mainwindow.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). 开机后,系统自动启动程序,如下所示

image003.png

b). 一个演示操作视频请点击这里观看



6). 总结

本文基于NXP iMX6嵌入式平台在嵌入式linux系统下测试SQLite数据库应用。

发布时间:2018年3月6日 16:16  人气:   审核编辑(何为)
相关链接

我有需求