博客专栏

EEPW首页>博客> 嵌入式Linux基于Qt开发SQLite应用

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

发布人:toradex 时间:2018-03-06 来源:工程师 发布文章

ByToradex秦海

1).简介

SQLite是包含在一个相对很小的C程序库中的关系数据库管理系统,与其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。基于上述特性,SQLite非常适合于在嵌入式系统中实现一个轻量级的数据库管理,本文就展示基于嵌入式LinuxQt 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.这个可以结合这里的说明自己进行编译,也可以通过这里直接下载编译好的imageSDK文件,image更新方法请参考这里


c).关于开发主机SDK安装和Qtcreator开发环境的配置请参考之前发布的《嵌入式Linux基于Qt开发GPIO应用一文》。


d).演示程序使用的LCD10inch 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


主要定义了下面一些函数:

---------------------------------------------------

/*创建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.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.servicesystemd自启动配置文件

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数据库应用。



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词:

相关推荐

技术专区

关闭