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...