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

Wednesday, March 7, 2018

简介

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

本文所演示的平台来自于 Toradex Colibri iMX6 AR M嵌入式平台,这是一个基于 NXP iMX6 ARM 处理器,支持单核/双核 Cortex-A9

准备

  1. Colibri iMX6 ARM 核心版配合 Colibri Eva Board 载板,连接调试串口 UART1 到开发主机方便调试。
  2. Colibri iMX6 系统使用基于 OpenEmbedded 框架重新编译的集成 Qt5.7 base 以及 Qsqllite 支持的 Toradex Linux image releaseV2.7 版本以及对应的 SDK。这个可以结合这里的说明自己进行编译, 也可以通过这里直接下载编译好的 image SDK 文件,image 更新方法请参考这里
  3. 关于开发主机    SDK安装和Qtcreator开发环境的配置请参考之前发布的《嵌入式Linux基于Qt开发GPIO应用一文》。
  4. 演示程序使用的 LCD 10inch 18bit LVDS 屏幕,请参考这里修改配置 u-Boot 显示分辨率。

QT演示程序开发

本文演示应用程序思路为,每隔10s读取当前系统时间以及 CPU 核心温度,并选择可以将数据保存到 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(QString sql_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();

“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

说明如下:

SQLite程序部署配置

  1. 将编译好的可执行程序 “qt-sqlite” 复制到Colibri iMX6模块 “/home/root” 目录下。
  2. 配置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

SQLite 示例程序演示

开机后,系统自动启动程序,如下所示:

演示操作视频请点击这里观看。

总结

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

以上所有的信息仅供您的参考,其中并不包含任何承诺。Toradex 会不定期发布软件更新,以上信息不保证能够适用于最新的软件。关于文中任何的错误、遗漏或者链接内容,我们对此不承担责任。

Author 秦海,技术销售工程师,韬睿(上海)

Leave a comment

Your email ID will be kept confidential. Required fields are marked *


Please enter the letters as they are shown in the image above. Letters are not case-sensitive.

* Your comment will be reviewed and then added. Thank you.