QT筆記 (一)如何連線MySQL資料庫和基本操作

2021-10-25 02:39:14 字數 3731 閱讀 3009

1.首先在.pro檔案裡加入qt += sql,讓qt支援mysql

2.qsqldatabase類是實現了資料庫連線的操作

3.qsqlquery類執行sql語句

4.qsqlrecord類封裝資料庫所有記錄

基本語法

qsqldatabase類

qsqldatabase db = qsqldatabase::

adddatabase

("qoci");

db.sethostname

("localhost");

//資料庫主機名

db.setdatabasename

("scott");

//資料庫名

db.setusername

("stott");

//資料庫使用者名稱

db.setpassword

("tiger");

//資料庫密碼

db.open()

;//開啟資料庫連線

db.close()

;//釋放資料庫連線

一:初始化資料庫

示例**:

qsqldatabase db = qsqldatabase::

adddatabase

("qmysql");

db.sethostname

(m_sremoteip)

; db.

setport

(m_nremoteport)

; db.

setdatabasename

(m_ssqlname)

; db.

setusername

(m_susername)

; db.

setpassword

(m_spassword);if

(!db.

open()

)

二:連線資料庫

**.h

bool

connectmysql()

;//連線資料庫

**.cpp

bool 類名::

connectmysql()

else

qdebug()

;// qsqldatabase::removedatabase("narivdg"); //移除資料庫

}

三:關閉資料庫

**.h

void

closemysql()

;//關閉資料庫連線

**.cpp

void 類名r::

closemysql()

// qstring name = db.connectionname();

// qsqldatabase::removedatabase(name);

// qsqldatabase::removedatabase(db.connectionname())

qstring name;

}//超出作用域,隱含物件qsqldatabase::database()被刪除。

//qsqldatabase::removedatabase(name);

}

qsqlquery類

插入值(sql語句)到資料庫操作

兩種插入方式:

(1)直接用sql語句插入(參照上面)

(2)利用預處理方式插入(oracle語法和odbc語法)

適合插入多條記錄,或者避免將值轉換成字串(即正確地轉義),呼叫prepare()函式指定乙個包含佔位符的query,然後繫結要插入的值

示例**:

(1)的示例**

if(!

connectmysql()

)qdebug()

<<

"database data opened successfully!"

;//從資料庫提取資料資訊

qsqlquery query;

//注意這個必須要寫在connectmysql()後面,不然有時候會出現問題

qstring sql =

qstring

("select ...."); //裡面寫想要實現功能的mysql語法

query.

exec

(sql)

;//這一句執行後就等同於在資料庫裡執行了mysql語句了

while

(query.

next()

)//注意這語句只有在只是select語法時才會執行

//如果執行的不是select語句,那可以用下面的語句進行替代上面的語句

if( query.

exec

(sql)

)closemysql()

;//關閉資料庫

(2)的示例**

oracle語法

qsqlquery query;   

query.

prepare

("insert into t_student (name, age) values (:name, :age)");

//準備執行sql查詢

query.

bindvalue

(":name"

,"小王");

//在繫結要插入的值

query.

bindvalue

(":age",11

);

query.

exec()

;

odbc語法

qsqlquery query;  

query.

prepare

("insert into t_student (name,age) values (?,?)");

//準備執行sql查詢

query.

addbindvalue

("小王");

//在繫結要插入的值

query.

bindvalue(11

);

query.

exec()

;

基本操作語法:

seek(int n) :query指向結果集的第n條記錄。指定當前的位置

first() :query指向結果集的第一條記錄。

last() :query指向結果集的最後一條記錄。

next() :query指向下一條記錄,每執行一次該函式,便指向相鄰的下一條記錄。

previous() :query指向上一條記錄,每執行一次該函式,便指向相鄰的上一條記錄。

record() :獲得現在指向的記錄。

value(int n) :獲得屬性的值。其中n表示你查詢的第n個屬性

int rownum = query.at(); //獲取query所指向的記錄在結果集中的編號

int fieldno = query.record().indexof(「name」); //返回"name"的列號

int columnnum = query.record().count(); //獲取每條記錄中屬性(即列)的個數

VC 學習筆記(一) 如何開始

毫無疑問,學習c 是一件痛苦的事情。我大概十年前接觸c 那是在學校裡,準備考研究生,某學校要求考c 我就開始一點一點學習,學習的過程還是比較舒服的。不得不說,就古典c 的理論,錢老講的還是很好的。但是主要是能完成 hello,world 的幾個版本而已,而這對於應考來說是足夠啦。雖然我最後未能直接讀...

Pandas學習筆記一 如何建立Series物件

常見的建立pandas物件的方式,都像這樣的形式 pd.series data,index index 其中,index是乙個可選引數,data引數支援多種資料型別 例如,data可以時列表或numpy陣列,這是index預設值為整數序列 pd.series 2,4,6 out 58 02 1426...

MySQL如何檢視連線數和狀態

命令 show processlist 如果要是root賬號,能夠看見當前所有使用者的連線。如果是普通賬號,只能看到自己占用的連線數。show processlist只能是列出前100條,如果想全列出可以使用show full processlist 檢視狀態 命令 show status 命令 s...