QT開發小計 七 資料庫操作(MySQL篇)

2021-10-04 18:50:34 字數 2778 閱讀 5844

高版本的qt支援新的c++語言特性,好用,但沒有了mysql驅動,麻煩。

編譯mysql驅動方法另寫,這裡有我編譯好的(qt版本 5.14.1)

(libmysql.dll 沒選高版本,高版本依賴其他庫,沒低版本的乾淨)。

1> 把libmysql.dll,libmysql.lib新增到qt bin目錄下(如:h:\qt\qt5.14.1\5.14.1\mingw73_64\bin)

2> 把qsqlmysql.dll新增到sqldrivers目錄下(如:h:\qt\qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers)

專案檔案:追加 sql

qt       +

= core gui sql

標頭檔案:

mainwindow.h

#include

#include

#include

db=

new qsqldatabase;

*db = qsqldatabase::

adddatabase

("qmysql");

db->

sethostname

("192.168.1.2");

db->

setdatabasename

("db_91451");

db->

setusername

("root");

db->

setpassword

("root");

db->

setport

(3306);

if(db-

>

open()

)

備註:下拉列表顯示支援的資料庫型別

ui-

>combobox-

>

additems

(qsqldatabase::

drivers()

);

m_model=

new qsqlquerymodel;

m_model-

>

setquery

(qstring

("select * from log_alarm"))

; m_model-

>

setheaderdata(0

, qt::horizontal,tr(

"id"))

; m_model-

>

setheaderdata(1

, qt::horizontal,tr(

"庫區"))

; m_model-

>

setheaderdata(2

, qt::horizontal,tr(

"點位"))

; ui-

>tableview-

>

setmodel

(m_model)

; ui-

>tableview-

>

setshowgrid

(true);

ui->tableview-

>

setalternatingrowcolors

(true);

//使**顏色交錯功能為真

ui->tableview-

>

horizontalheader()

->

setstylesheet

("qheaderview::section ");

ui->tableview-

>

verticalheader()

->

setvisible

(false);

ui->tableview-

>

horizontalheader()

->

setvisible

(true

);

(吐槽:**預設樣式太難看,尤其表頭,全白,看不見分界線)

query=

new qsqlquery;

;bool b=query-

>

exec

("select * from log_alarm;");

if(b)

else

//插入

query=

new qsqlquery;

bool b= query-

>

exec

("insert into log_alarm (area,node) values ('新建區域','未知')");

Qt 資料庫操作

sql 是運算元據庫的標準語言,適用於mysql oracle db2 等資料庫。qt 的 qtsql 模組基於 sql 提供了相關資料庫操作函式,因此得以使這些資料庫操作起來大同小異。下面的以sqlite資料庫為例記錄,生成的資料庫可通過sqlitestudio進行視覺化操作。在.pro檔案中新增...

QT資料庫操作

瀏覽 在qsqlquery類中當執行exec 後會把指標放在記錄集中第乙個記錄之上,所以需要呼叫qsqlquery next 來獲取第乙個資料,下面通過迴圈體來遍歷所有表中的資料。while query.next qsqlquery value 函式得到當前記錄區域中的資料,qsqlquery va...

資料庫優化小計

周一夜間進行了一次xx業務相關的資料庫表優化。原因 一共4張表,資料量不大,最小的40萬記錄,最大的300萬,大小不超過300mb。但由於歷史原因,表沒有建立索引,對應的服務使用的sql千姿百態,修改起來難度有點大,容易改錯,涉及的全國客戶較多,大部分都是全表掃瞄,在秒級的響應時間,但大多客戶還能忍...