qt學習之資料庫操作

2021-10-05 03:26:21 字數 3768 閱讀 9253

qt下運算元據庫的簡單介紹:

自己的環境:

windows10 64位

mysql 『8.0.13』

qt 5.12

1,準備工作

將mysql安裝路徑下的libmysql.dll,新增到qt安裝目錄d:\qt\5.12.3\msvc2017_64\bin(根據自己的而定)下,在.pro檔案中新增 qt += sql ,配置環境配置完成。

2,用到的標頭檔案

#include//連線資料庫的相關介面

#include

#include

#include

#include

#include

3,可以檢視自己的qt都支援哪些資料庫利用下面語句:

qdebug()

;

我的qt版本支援結果:

(「qsqlite」, 「qmysql」, 「qmysql3」, 「qodbc」, 「qodbc3」, 「qpsql」, 「qpsql7」)

4,具體連線操作

qsqldatabase db = qsqldatabase::

adddatabase

("qmysql3");

//新增mysql資料庫驅動

//連線資料庫

db.sethostname

("127.0.0.1");

//資料庫所在主機ip位址

db.setusername

("root");

//資料庫使用者

db.setpassword

("填寫自己的密碼");

//資料庫密碼

db.setdatabasename

("自己要連線的資料庫");

//要操作的資料庫

//開啟資料庫if(

!db.

open()

)

5,對資料庫資料進行操作

主要利用qsqlquery物件的exec(sql語句)函式操作

//qt_data_user為我自己建立的表

//插入操作

query.

exec

("insert into qt_data_user values('casear',1111,'male')");

//插入中文是出錯,不是資料庫問題,而是qt的問題

//建立表

query.

exec

("create table new_table(`num` int not null auto_increment,`name` varchar(45) not null,primary key (`num`));");

//查詢

query.

exec

("select * from qt_data_user");

while

(query.

next()

)

插入資料也可批操作兩種方式:

a,odbc操作類似的一種方式

query.

prepare

("insert into qt_data_user(name,id,gender) values(?,?,?)");

//?相當於佔位符,true

//給字段設定內容 list

qvariantlist nameli,idli,genderli;

nameli<<

"damo"

<<

"guanyu"

<<

"casear"

; idli<<

1126

<<

1127

<<

1129

; genderli<<

"male"

<<

"male"

<<

"male"

;//給字段繫結值

query.

addbindvalue

(nameli,qsql::inout)

;//第二個引數可省,有過載

query.

addbindvalue

(idli,qsql::out)

; query.

addbindvalue

(genderli,qsql::out)

;//執行預處理命令if(

!query.

execbatch()

)為執行處理命令

qdebug()

<< query.

lasterror()

.text()

;

b,oracle類似操作,與a很像

query.

prepare

("insert into qt_data_user(name,id,gender) values(:name,:id,:gender)");

//佔位符

//給字段設定內容 list

qvariantlist nameli,idli,genderli;

nameli<<

"damo_"

<<

"guanyu_"

<<

"casear_"

; idli<<

1131

<<

1133

<<

1123

; genderli<<

"male"

<<

"male"

<<

"male"

;//繫結

query.

bindvalue

(":name"

,nameli)

;//或者query.bindvalue(0,nameli);0為字段索引從0開始

query.

bindvalue

(":id"

,idli)

; query.

bindvalue

(":gender"

,genderli)

;//執行if(

!query.

execbatch()

)qdebug()

<< query.

lasterror()

.text()

;

6,刪除操作,利用事務

寫了乙個介面,乙個輸入框,輸入要刪除的行的name值進行刪除,第乙個按鈕(刪除)的函式如下:

void databasewidget::

on_buttondel_clicked()

//開啟事務

第二個按鈕(確認刪除),表示在進行乙個事務時,如果沒有提交之前,可以回滾事務,下乙個按鈕實現回滾事務操作

void databasewidget::

on_button_ok_del_clicked()

//提交事務

void databasewidget::

on_buttoncalcel_clicked()

//回滾事務

cpp文件

結束!

Qt學習 SQLite資料庫操作

qsqlquery提供了對結果集的訪問,可以一次訪問一條記錄。執行完exec 函式後,會生成一張查詢得到的記錄結果集,qsqlquery的內部指標會位於第一條記錄前面的位置。必須呼叫一次qsqlquery next 函式來使其前進到第一條記錄,然後重複使用next 函式來訪問其他記錄,直到函式返回值...

Qt 資料庫操作

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

QT資料庫操作

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