qt下運算元據庫的簡單介紹:
自己的環境:
windows10 64位1,準備工作mysql 『8.0.13』
qt 5.12
將mysql安裝路徑下的libmysql.dll,新增到qt安裝目錄d:\qt\5.12.3\msvc2017_64\bin(根據自己的而定)下,在.pro檔案中新增 qt += sql ,配置環境配置完成。
2,用到的標頭檔案
#include//連線資料庫的相關介面3,可以檢視自己的qt都支援哪些資料庫利用下面語句:#include
#include
#include
#include
#include
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...