溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

發(fā)布時(shí)間:2023-04-15 11:52:08 來源:億速云 閱讀:120 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Qt連接MySQL數(shù)據(jù)庫的步驟是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1.直接通過MySQL的驅(qū)動(dòng)加載數(shù)據(jù)庫

1)所需代碼

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("數(shù)據(jù)庫名");
    db.setUserName("用戶名");
    db.setPassword("密碼");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }

當(dāng)然要在.pro文件中添加一行引入

QT += sql

如果顯示:

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

那么恭喜你太幸運(yùn)了,你已經(jīng)成功連接MySQL數(shù)據(jù)庫了,快去使用吧。

如果顯示:

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

也不要灰心接著往下看我的電腦就一直顯示失敗

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

沒有QMYSQL的驅(qū)動(dòng),這是怎么回事呢?

2)解決QMYSQL driver not loaded

Qt連接到mysql的過程:app->Qt的數(shù)據(jù)庫插件->mysql動(dòng)態(tài)庫->mysql服務(wù)。

Qt的數(shù)據(jù)庫插件位于“C:\Qt(安裝路徑)(Qt版本)\版本號(hào)(庫)\mingw49_32(編譯器)\plugins(插件)\sqldrivers(數(shù)據(jù)庫插件)” 下的qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用).

mysql動(dòng)態(tài)庫位于“C:\Qt\MySQLServer5.5(mysql安裝路徑)\lib”下的“l(fā)ibmysql.dll“

i:將mysql下的ilbmysql.lib和libmysql.dll復(fù)制到Qt的bin目錄下
ii:查看自己的qt中有沒有qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用)

如果都有:

運(yùn)行一下代碼:

//輸出可用數(shù)據(jù)庫
    qDebug()<<"available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug()<<driver;

如果輸出中含有MySQL,那么恭喜你說明你的qt有MySQL驅(qū)動(dòng)了:

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

如果沒有,不要灰心,因?yàn)槲业木褪且恢睕]有MySQL驅(qū)動(dòng):

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

大家可以重新下載一些不同的版本嘗試一下,我嘗試了無數(shù)次后不得不放棄,就選擇了另一條路,通過ODBC連接MySQL數(shù)據(jù)庫。

2.通過ODBC連接MySQL數(shù)據(jù)庫

1)官方解釋:

ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互連)提供了一種標(biāo)準(zhǔn)的API(應(yīng)用程序編程接口)方法來訪問數(shù)據(jù)庫管理系統(tǒng)(DBMS)。這些API利用SQL來完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語言的支持,用戶可以直接將SQL語句送給ODBC。ODBC的設(shè)計(jì)者們努力使它具有最大的獨(dú)立性和開放性:與具體的編程語言無關(guān),與具體的數(shù)據(jù)庫系統(tǒng)無關(guān),與具體的操作系統(tǒng)無關(guān)。

簡(jiǎn)單的說就是我的qt中含有ODBC的驅(qū)動(dòng):

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

所以利用ODBC去使用MySQL的數(shù)據(jù)庫.

2)下載ODBC

官網(wǎng)

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

選擇和qt編譯器相同的字節(jié)比如我的qt使用的是64字節(jié)的

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

下載的ODBC選擇的也是64字節(jié)的,選擇MSI類型的直接安裝就可以

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

下載一直點(diǎn)擊next即可:

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

查看點(diǎn)擊小娜,搜索ODBC,

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

3)連接MySQL數(shù)據(jù)庫

i添加MySQL的DSN

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

紅色的可以隨便填,是自己對(duì)于ODBC驅(qū)動(dòng)的描述,粉色的是MySQL的用戶名和密碼,數(shù)據(jù)庫選擇你在MySQL中創(chuàng)建的數(shù)據(jù)庫名字即可.

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

點(diǎn)擊test如果出現(xiàn)下圖說明連接成功

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

4)qt通過ODBC連接MySQL

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("是你在ODBC中創(chuàng)建的Data source?。睿幔恚?quot;);
    db.setUserName("用戶名");
    db.setPassword("密碼");
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }

運(yùn)行程序:

Qt連接MySQL數(shù)據(jù)庫的步驟是什么

大功告成

3.qt通過ODBC操作數(shù)據(jù)庫

1)查詢數(shù)據(jù)

代碼:

//查詢數(shù)據(jù)庫中所有表的名稱
    QStringList tables = db.tables();
    foreach(QString table, tables)
        qDebug()<<table;

//ODBC查詢數(shù)據(jù)
    QSqlQuery result = db.exec(" select * from users");
    while(result.next()){
        qDebug()<<"user_id:"<<result.value("user_id").toInt();
        qDebug()<<"name:"<<result.value("name").toString();
        qDebug()<<"password:"<<result.value("password").toString();
        qDebug()<<"score:"<<result.value("score").toInt()<<endl;
    }

2)插入數(shù)據(jù)

//ODBC插入數(shù)據(jù)
    result.clear();
    bool result_successed = result.exec("insert into users(name,password,score) values ( 'joe2y','123456',0)");

    if(result_successed){
        qDebug()<<"插入成功!";
    }else {
        qDebug()<<"插入失??!";
}

3)更新數(shù)據(jù)

//ODBC更新數(shù)據(jù)
    result.clear();
    bool result_successed2 = result.exec("update users set score=10 where user_id=2");

    if(result_successed2){
        qDebug()<<"更新成功!"<<endl;
    }else{
        qDebug()<<"更新失?。?quot;<<endl;
    }

“Qt連接MySQL數(shù)據(jù)庫的步驟是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI