高版本的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千姿百態,修改起來難度有點大,容易改錯,涉及的全國客戶較多,大部分都是全表掃瞄,在秒級的響應時間,但大多客戶還能忍...