qt介面程式資料模型使用MYSQL資料庫儲存

2021-09-02 07:23:04 字數 3634 閱讀 3518

在包含大量資料的pc應用程式中,結構化資料的儲存最好交給資料庫。對於只有少量資料的pc應用程式,考慮到將來的擴充套件和**的簡潔,仍然可以使用資料庫的方式,不過在部署和維護階段會比較複雜。

,本文繼承了原來寫的一篇在android應用中使用資料庫的文章,使用了一樣的資料模型,但用qt的資料庫相關類實現。

設計乙個用來儲存lab顏色空間的資料類物件。

h檔案:

#ifndef colorspace_h

#define colorspace_h

#include #include class colorspace

qstring getcolorname()

qstring getl()

qstring geta()

qstring getb()

void setcolorname(qstring colorname)

void setl(qstring l)

void seta(qstring a)

void setb(qstring b)

void setlabint(int l, int a, int b)

};#endif // colorspace_h

cpp檔案:

#include "colorspace.h"

colorspace::colorspace()

colorspace::colorspace(quuid uuid)

這個資料模型用來儲存乙個顏色以及它對應的lab顏色空間的l,a,b通道的值,uuid是儲存資料庫時用到的乙個資料。

乙個應用中會用到多個顏色,那麼需要設計乙個colorspacelab類來管理。

h檔案:

#ifndef colorspacelab_h

#define colorspacelab_h

#include #include #include #include #include #include "colorspace.h"

#include "basehelper.h"

class colorspacelab

;#endif // colorspacelab_h

cpp檔案:

#include "colorspacelab.h"

colorspacelab* colorspacelab::pcolorspacelab = nullptr;

colorspacelab::colorspacelab()

colorspacelab* colorspacelab::get()

return pcolorspacelab;

}void colorspacelab::addcolorspace(colorspace c) //測試通過

}void colorspacelab::deletecolorspacebyuuid(colorspace c) //測試通過

}void colorspacelab::deleteallcolorspace() //測試通過

return listcs;

}colorspace colorspacelab::getcolorspacebyuuid(quuid id) //測試通過

else

return null;

}colorspace colorspacelab::getcolorspacebycolorname(qstring color) //測試通過

if(query.next())

else

}void colorspacelab::updatecolorspacebyuuid(colorspace colorspace) //測試通過

}void colorspacelab::updatecolorspacebyname(colorspace colorspace) //測試通過

}

類的中指向自身的靜態指標變數pcolorspacelab,表明這個類在使用時只被例項化一次,因為乙個應用只需要乙個顏色管理類。

需要說明的是,qmessagebox 彈出的訊息框只能在介面執行緒中實現,如果在qt的main函式對lab類進行操作,訊息可以正常彈出。如果用在其他地方,需要把訊息框換成qdebug方式。

basehelper也是乙個類,該類實現資料庫的連線和表建立等功能。

在顏色管理類colorspacelab中實現的功能有查詢,增加,刪除,按uuid和按顏色名稱更新。

該類用到了一些更加底層的操作basehelper。

h檔案:

#ifndef basehelper_h

#define basehelper_h

#include #include #include #include #include #include class basehelper

;#endif // basehelper_h

cpp檔案:

#include "basehelper.h"

basehelper* basehelper::pbasehelper = nullptr;

basehelper* basehelper::get()

return pbasehelper;

}basehelper::basehelper()

//檢視表是否存在

qsqlquery query(db);

query.exec("select table_name from information_schema.tables where table_name ='colorspace'");

if(query.next())

else

query.exec("select table_name from information_schema.tables where table_name ='template'");

if(query.next())

else

}

basehelper在例項化時進行資料庫的連線和表的建立(如果不存在)。

colorspace* cs = new colorspace();

colorspacelab* pcsl = colorspacelab::get();

qlistlistcs = pcsl->getcolorspaces();

pcsl->deletecolorspacebyuuid(listcs.at(0));

pcsl->addcolorspace(*cs);

colorspace cs1 = listcs.at(0);

colorspace cs2 = listcs.at(1);

cs1.seta("1");

cs1.setb("1");

cs2.seta("200");

cs2.setb("201");

colorspace cs1reture = pcsl->getcolorspacebycolorname(cs1.getcolorname());

pcsl->updatecolorspacebyname(cs2);

5 4 保護設定值資料模型介面

我新換一部智慧型手機後,一般會忍不住將所有設定選單功能體驗一遍,雖然設定層層疊疊,但能將手機設定成自己喜歡的樣子還是頗有成就感的。類同智慧型手機,微機保護等工業產品隨著各種功能的增加,各種各樣的設定也變得繁雜起來。微機保護產品有很多態別的設定值,如遙測越限值,如裝置通訊狀態等,但其中有一類設定值比較...

yii中資料模型的使用

模型是 cmodel 或其子類的例項。模型用於保持資料以及與其相關的業務邏輯。模型是單獨的資料物件。它可以是資料表中的一行,或者乙個使用者輸入的表單。yii資料庫操作使用的是pdo,所以使用yii的時候必須保證你的php.ini中pdo是開啟狀態。乙個資料表對應乙個資料模型,所以有多少張表就對應多少...

Odoo中使用的資料模型

odoo中使用的部分表如下,res users 使用者 res groups 使用者組 角色 res lang 語言 res partner 商 客戶 聯絡人 res font 字型 res company 公司 res bank 銀行 res country 國家 res country stat...