0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt(C++)使用SQLite数据库完成数据增删改查

DS小龙哥-嵌入式威廉希尔官方网站 来源:DS小龙哥-嵌入式威廉希尔官方网站 作者:DS小龙哥-嵌入式技 2023-06-21 09:10 次阅读

一、项目介绍

当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数

实现功能:

  1. 创建 SQLite 数据库表,用于存储宠物投喂器上传的数据。
  2. 实现对数据库表中数据的插入操作,即将从宠物投喂器接收到的数据存储到数据库中。
  3. 实现对数据库表中数据的查询操作,包括按照投喂间隔时间、水温、剩余重量等参数进行筛选,以便用户能够查看特定范围内的数据信息
  4. 实现对数据库表中数据的修改操作,即可以修改已经存储的宠物投喂器上传的数据。
  5. 实现对数据库表中数据的删除操作,即可以删除已经存储的宠物投喂器上传的数据。

image-20230613094430971

二、SQLite数据库

SQLite是一款轻量级、开源的嵌入式关系型数据库管理系统(RDBMS),设计目标是嵌入式设备或应用程序使用。与传统的客户端/服务器模式不同,SQLite引擎不是一个独立的进程,而是被集成在一个应用程序中。应用程序可以访问SQLite数据库文件,读写其中的数据,从而实现数据的存储和管理。

以下是 SQLite 数据库的特点:

  1. 轻量级:SQLite 占用资源较小,运行速度快,并且可以很方便地集成到应用程序中,使其成为一个内嵌的数据库。
  2. 无需服务器:SQLite 是一款本地化的数据库,无需专门的服务器进行支持,因此对于小型应用程序来说,是一种非常适合的解决方案。
  3. 开源:SQLite 是一款开源的数据库,用户可以免费获取其源代码,并且可以自由地进行修改和定制。
  4. 支持 SQL:SQLite 支持完整的 SQL 标准,并且在 SQL 语法和命令方面与其他关系型数据库非常接近,具有较高的兼容性。
  5. 可移植性:SQLite 支持多种操作系统编程语言,如 Windows、Linux、Mac OS X、iOSAndroid 等平台,以及 C/C++JavaPythonC# 等编程语言。
  6. 数据库存储方式: SQLite 将数据库存储在单个文件中,用户可以根据需要将其复制或移动到其他位置或计算机中,以方便数据的安全备份和分享。

三、在Qt里使用SQLITE数据库

在 Qt 中,使用 SQLite 数据库的主要流程如下:

(1)导入 SQLite 相关库文件:在 Qt 项目中,需要先导入 SQLite 相关的库文件和头文件,以便在代码中使用 SQLite 的相关函数和类。

需要在项目文件中添加以下语句:

QT += sql

这样就可以包含 SQLite 数据库支持的相关头文件和类。

(2)创建数据库连接:使用 QSqlDatabase 类可以在 Qt 中创建一个数据库连接。需要设置数据库类型(如 "QSQLITE"),以及数据库文件路径等参数。

代码示例如下:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
 db.setDatabaseName("mydatabase.db");

在实际使用时,可以使用绝对或相对路径指定数据库文件路径。

(3)打开数据库:使用 QSqlDatabase 类的 open 函数可以打开数据库连接。在成功打开数据库后,可以执行 SQL 查询语句,读取和修改数据库中的数据。

代码示例:

if(db.open())
 {
     QSqlQuery query;
     query.exec("CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)");
     query.exec("INSERT INTO mytable VALUES(1, 'John')");
     query.exec("SELECT id, name FROM mytable");
     while(query.next()) {
         int id = query.value(0).toInt();
         QString name = query.value(1).toString();
         qDebug() < < id < < name;
     }
 }

以上代码创建了一个名为 "mytable" 的数据库表,并向其中插入了一条记录。随后,执行 SELECT 查询语句读取表中的数据,并将结果输出到控制台中。

(4)关闭数据库:当不再需要使用数据库时,应该使用 close 函数关闭数据库连接,以释放资源。

代码示例:

db.close();

在以上流程中,使用 QSqlQuery 类可以执行 SQL 查询语句,并获取查询结果。通过 QSqlRecord 类可以访问查询结果中的字段和值。

四、完整代码

下面是 Qt(C++)中利用 SQLite 数据库对宠物投喂器上传的数据进行存储管理的实现代码,包括数据的增删改查功能:

#include < QtSql >
 #include < QDebug >// 创建或打开数据库连接
 bool createConnection()
 {
     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
     db.setDatabaseName("petfeeder.db");
     if (!db.open()) {
         qDebug() < < "Failed to connect database.";
         return false;
     }
     // 创建 petfeeder 表
     QSqlQuery query;
     bool ret = query.exec("CREATE TABLE IF NOT EXISTS petfeeder "
                            "(id INTEGER PRIMARY KEY AUTOINCREMENT, "
                            "interval INTEGER, temperature REAL, weight REAL)");
     if (!ret) {
         qDebug() < < "Failed to create table: " < < query.lastError().text();
     }
     return true;
 }
 ​
 // 插入数据
 void insertData(int interval, double temperature, double weight)
 {
     QSqlQuery query;
     QString sql = QString("INSERT INTO petfeeder (interval, temperature, weight) "
                           "VALUES (%1, %2, %3)").arg(interval).arg(temperature).arg(weight);
     bool ret = query.exec(sql);
     if (!ret) {
         qDebug() < < "Failed to insert data: " < < query.lastError().text();
     }
 }
 ​
 // 更新数据
 void updateData(int id, int interval, double temperature, double weight)
 {
     QSqlQuery query;
     QString sql = QString("UPDATE petfeeder SET interval=%1, temperature=%2, weight=%3 "
                           "WHERE id=%4").arg(interval).arg(temperature).arg(weight).arg(id);
     bool ret = query.exec(sql);
     if (!ret) {
         qDebug() < < "Failed to update data: " < < query.lastError().text();
     }
 }
 ​
 // 删除数据
 void deleteData(int id)
 {
     QSqlQuery query;
     QString sql = QString("DELETE FROM petfeeder WHERE id=%1").arg(id);
     bool ret = query.exec(sql);
     if (!ret) {
         qDebug() < < "Failed to delete data: " < < query.lastError().text();
     }
 }
 ​
 // 查询数据
 void queryData()
 {
     QSqlQuery query("SELECT * FROM petfeeder");
     while (query.next()) {
         int id = query.value(0).toInt();
         int interval = query.value(1).toInt();
         double temperature = query.value(2).toDouble();
         double weight = query.value(3).toDouble();
         qDebug() < < "Id:" < < id < < "Interval:" < < interval < < "Temperature:" < < temperature < < "Weight:" < < weight;
     }
 }
 ​
 // 主函数
 int main()
 {
     if (!createConnection()) {
         return 1;
     }
     // 插入数据
     insertData(3, 25.5, 0.2);
     insertData(2, 26, 0.3);
     insertData(4, 24, 0.4);
     // 查询数据
     queryData();
     // 更新数据
     updateData(2, 4, 27, 0.3);
     // 删除数据
     deleteData(3);
     // 查询数据
     queryData();
 ​
     return 0;
 }

在上面代码里,使用 createConnection 函数创建或打开数据库连接,创建名为 petfeeder 的数据表。使用 insertData 函数向数据表中插入数据,使用 updateData 函数更新数据,使用 deleteData 函数删除数据,使用 queryData 函数查询数据,将结果输出到控制台。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4302

    浏览量

    85815
  • 数据库
    +关注

    关注

    7

    文章

    3798

    浏览量

    64370
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73631
  • Qt
    Qt
    +关注

    关注

    1

    文章

    302

    浏览量

    37902
  • SQlite
    +关注

    关注

    0

    文章

    78

    浏览量

    15938
收藏 人收藏

    评论

    相关推荐

    玩转SQLite5:使用Python来读写数据库

    本篇介绍了如何使用**Python**语言来进行SQLite数据库的读写,在嵌入式式开发中,更多的是使用**C/C++**语言进行开发,因此,下篇我们介绍如何使用
    的头像 发表于 09-25 08:51 1847次阅读
    玩转<b class='flag-5'>SQLite</b>5:使用Python来读写<b class='flag-5'>数据库</b>

    Qt使用kingbase数据库存储数据(完成考勤系统数据增删改)

    当前基于Qt(C++)开发了一款教室上课考勤系统的软件,主要是使用了Kingbase数据库进行数据存储和管理。
    的头像 发表于 06-12 08:42 1489次阅读
    <b class='flag-5'>Qt</b>使用kingbase<b class='flag-5'>数据库</b>存储<b class='flag-5'>数据</b>(<b class='flag-5'>完成</b>考勤系统<b class='flag-5'>数据</b><b class='flag-5'>增删改</b><b class='flag-5'>查</b>)

    Qt(C++)使用SQLite数据库完成数据增删改

    当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据增删改
    的头像 发表于 08-28 11:34 1879次阅读

    (专题)Labview 对于大数据的操作 途径:使用数据库

    等等对数据库进行增删改。使用的数据库是微软的小型数据库Access。有期望进一步讨论的坛友请联系:QQ:470885756E-mail@w
    发表于 10-15 09:52

    如何在本地电脑中输入access数据库路径,对它进行增删改

    各位大佬好,麻烦指导下如何在本地电脑中通过输入access数据库路径,对它进行增删改
    发表于 01-03 09:49

    如何用php调用mysql数据库实现增删改

    php调用mysql数据库实现增删改
    发表于 04-09 12:53

    用JDBC连接MySQL数据库并进行简单的增删改操作

    本文主要详细讲解了用JDBC连接MySQL数据库并进行简单的增删改操作。Java 数据库连接是Java语言中用来规范客户端程序如何来访问数据库
    发表于 02-06 09:21 6307次阅读
    用JDBC连接MySQL<b class='flag-5'>数据库</b>并进行简单的<b class='flag-5'>增删改</b><b class='flag-5'>查</b>操作

    PHP数据库教程之增删改数据高级操作资料免费下载

    本文档的主要内容详细介绍的是PHP数据库教程之增删改数据高级操作资料免费下载。
    发表于 07-02 17:40 1次下载

    如何用Python对数据库中的数据进行增删改

    pyhton如何连接mysql数据库 1、导入模块 2、打开数据库连接 3、创建游标对象cursor 如何用Python对数据库中的数据进行增删改
    的头像 发表于 08-05 10:22 8396次阅读

    什么是Sqlite数据库

    什么是Sqlite数据库?  Sqlite数据库是一种轻量级的关系型数据库管理系统。它被开源软件组织SQ
    的头像 发表于 08-28 16:41 2557次阅读

    python读取数据库数据 python查询数据库 python数据库连接

    ,获取数据库中的数据,并对数据进行增删改等操作。本文将详细介绍Python如何连接数据库、读取
    的头像 发表于 08-28 17:09 1818次阅读

    SQLite数据库增删改

    SQLite数据库增删改  SQLite是一种轻量级的RDBMS(关系型数据库管理系统),具有
    的头像 发表于 08-28 17:09 1205次阅读

    mysql数据库增删改sql语句

    MySQL是一种常用的关系型数据库管理系统,是许多网站和应用程序的首选数据库。在MySQL中,我们可以使用SQL(结构化查询语言)进行数据增删改
    的头像 发表于 11-16 15:41 1234次阅读

    数据库mysql基本增删改

    MySQL是一种开源的关系型数据库管理系统,常用于Web应用程序的数据存储和管理。通过使用MySQL,用户可以进行数据增删改操作,从而实
    的头像 发表于 11-16 16:35 1508次阅读

    mysql数据库增删改基本语句

    MySQL是一种关系型数据库管理系统,提供了丰富的功能和语法,来支持数据增删改。在本文中,将详细介绍MySQL数据库的增、删、改、
    的头像 发表于 11-16 16:36 965次阅读