<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Qt(C++)使用SQLite數據庫完成數據增刪改查

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-08-28 11:34 ? 次閱讀

一、項目介紹

當前文章介紹的設計的主要功能是利用 SQLite 數據庫實現寵物投喂器上傳數據的存儲,并且支持數據的增刪改查操作。其中,寵物投喂器上傳的數據包括投喂間隔時間、水溫、剩余重量等參數。

實現功能:

  1. 創建 SQLite 數據庫表,用于存儲寵物投喂器上傳的數據。
  2. 實現對數據庫表中數據的插入操作,即將從寵物投喂器接收到的數據存儲到數據庫中。
  3. 實現對數據庫表中數據的查詢操作,包括按照投喂間隔時間、水溫、剩余重量等參數進行篩選,以便用戶能夠查看特定范圍內的數據信息。
  4. 實現對數據庫表中數據的修改操作,即可以修改已經存儲的寵物投喂器上傳的數據。
  5. 實現對數據庫表中數據的刪除操作,即可以刪除已經存儲的寵物投喂器上傳的數據。

二、SQLite數據庫

SQLite是一款輕量級、開源的嵌入式關系型數據庫管理系統(RDBMS),設計目標是嵌入式設備或應用程序使用。與傳統的客戶端/服務器模式不同,SQLite引擎不是一個獨立的進程,而是被集成在一個應用程序中。應用程序可以訪問SQLite數據庫文件,讀寫其中的數據,從而實現數據的存儲和管理。

以下是 SQLite 數據庫的特點:

  1. 輕量級:SQLite 占用資源較小,運行速度快,并且可以很方便地集成到應用程序中,使其成為一個內嵌的數據庫。
  2. 無需服務器:SQLite 是一款本地化的數據庫,無需專門的服務器進行支持,因此對于小型應用程序來說,是一種非常適合的解決方案。
  3. 開源:SQLite 是一款開源的數據庫,用戶可以免費獲取其源代碼,并且可以自由地進行修改和定制。
  4. 支持 SQL:SQLite 支持完整的 SQL 標準,并且在 SQL 語法和命令方面與其他關系型數據庫非常接近,具有較高的兼容性。
  5. 可移植性:SQLite 支持多種操作系統編程語言,如 Windows、Linux、Mac OS X、iOS、Android 等平臺,以及 C/C++、Java、Python、C# 等編程語言。
  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 函數查詢數據,將結果輸出到控制臺。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3603

    瀏覽量

    63480
  • 函數
    +關注

    關注

    3

    文章

    4042

    瀏覽量

    61390
  • C++
    C++
    +關注

    關注

    21

    文章

    2066

    瀏覽量

    72933
  • Qt
    Qt
    +關注

    關注

    1

    文章

    299

    瀏覽量

    37405
  • SQlite
    +關注

    關注

    0

    文章

    78

    瀏覽量

    15783
收藏 人收藏

    評論

    相關推薦

    Qt(C++)使用SQLite數據庫完成數據增刪改

    當前文章介紹的設計的主要功能是利用 SQLite 數據庫實現寵物投喂器上傳數據的存儲,并且支持數據增刪改查操作。其中,寵物投喂器上傳的
    的頭像 發表于 06-21 09:10 ?773次閱讀
    <b class='flag-5'>Qt</b>(<b class='flag-5'>C++</b>)使用<b class='flag-5'>SQLite</b><b class='flag-5'>數據庫</b><b class='flag-5'>完成數據</b><b class='flag-5'>增刪改</b>查

    Qt使用kingbase數據庫存儲數據(完成考勤系統數據增刪改查)

    當前基于Qt(C++)開發了一款教室上課考勤系統的軟件,主要是使用了Kingbase數據庫進行數據存儲和管理。
    的頭像 發表于 06-12 08:42 ?1093次閱讀
    <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>查)

    (專題)Labview 對于大數據的操作 途徑:使用數據庫

    等等對數據庫進行增刪改。使用的數據庫是微軟的小型數據庫Access。有期望進一步討論的壇友請聯系:QQ:470885756E-mail@w
    發表于 10-15 09:52

    【上?!空\聘C/C++開發工程師(數據庫方向)

    2年以上C/C++開發工作經驗;2. 有 Qt Widgets 開發經驗優先;3. 有嵌入式上數據庫開發經驗優先;4. 掌握C/
    發表于 07-14 12:22

    Flask-SQLAlchemy對數據庫的增加和刪除

    Flask學習(三) - Flask-SQLAlchemy對數據庫增刪改
    發表于 10-30 07:11

    如何在本地電腦中輸入access數據庫路徑,對它進行增刪改

    各位大佬好,麻煩指導下如何在本地電腦中通過輸入access數據庫路徑,對它進行增刪改。
    發表于 01-03 09:49

    labview多程序同時訪問數據庫閃退問題

    用labview訪問數據庫,連接,增刪改都沒問題。但當我再兩個循環中都對數據庫進行操作時,程序要么卡著不動了,要么閃退。經排查是當兩個循環中同時執行
    發表于 01-19 15:50

    使用jpa和thymeleaf做增刪改示例

    【本人禿頂程序員】springboot專輯:springboot+jpa+thymeleaf增刪改示例
    發表于 04-01 11:49

    如何用php調用mysql數據庫實現增刪改

    php調用mysql數據庫實現增刪改
    發表于 04-09 12:53

    Xutils的數據庫的簡單使用方法

    Xutils框架之DBUtils(DbManager)數據庫增刪改
    發表于 06-08 08:07

    python是如何實現hbase增刪改

    hbase shell是怎樣去創建命名空間的?python是如何實現hbase增刪改的?求解
    發表于 10-19 07:26

    SQLite數據庫增刪改

    SQLite數據庫增刪改查? SQLite是一種輕量級的RDBMS(關系型數據庫管理系統),具有速度快、易用性高等優點。雖然
    的頭像 發表于 08-28 17:09 ?872次閱讀

    mysql數據庫增刪改查sql語句

    MySQL是一種常用的關系型數據庫管理系統,是許多網站和應用程序的首選數據庫。在MySQL中,我們可以使用SQL(結構化查詢語言)進行數據增刪改查操作。本文將詳細介紹MySQL
    的頭像 發表于 11-16 15:41 ?644次閱讀

    數據庫mysql基本增刪改

    MySQL是一種開源的關系型數據庫管理系統,常用于Web應用程序的數據存儲和管理。通過使用MySQL,用戶可以進行數據增刪改查操作,從而實現對數據
    的頭像 發表于 11-16 16:35 ?1055次閱讀

    mysql數據庫增刪改查基本語句

    MySQL是一種關系型數據庫管理系統,提供了豐富的功能和語法,來支持數據增刪改查。在本文中,將詳細介紹MySQL數據庫的增、刪、改、查基本語句,以及一些常見用例。 一、
    的頭像 發表于 11-16 16:36 ?574次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>