欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫(kù)教程

 更新時(shí)間:2023年04月15日 10:03:13   作者:joey小天使  
QT眾所周知是一個(gè)開(kāi)源的,以C++為底層的可視化工具庫(kù),下面這篇文章主要給大家介紹了關(guān)于最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫(kù)教程的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下

被Qt連接數(shù)據(jù)庫(kù)折磨了三天之后終于連接成功了,記錄一下希望對(duì)看到的人有所幫助。

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

1)所需代碼

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("數(shù)據(jù)庫(kù)名");
    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

如果顯示:

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

如果顯示:

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

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

2)解決QMYSQL driver not loaded

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

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

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

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

如果都有:

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

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

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

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

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

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

1)官方解釋:

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

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

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

2)下載ODBC

官網(wǎng)

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

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

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

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

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

i添加MySQL的DSN

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

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

4)qt通過(guò)ODBC連接MySQL

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("是你在ODBC中創(chuàng)建的Data source?。睿幔恚?);
    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)行程序:

大功告成

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

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

代碼:

//查詢數(shù)據(jù)庫(kù)中所有表的名稱
    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()<<"更新失敗!"<<endl;
    }

總結(jié)

到此這篇關(guān)于Qt連接MySQL數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Qt連接MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何利用C++實(shí)現(xiàn)一個(gè)反射類(lèi)

    詳解如何利用C++實(shí)現(xiàn)一個(gè)反射類(lèi)

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)反射類(lèi),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Visual Studio安裝的圖文教程

    Visual Studio安裝的圖文教程

    這篇文章主要介紹了Visual Studio安裝的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c++ #include是怎么樣工作的?

    c++ #include是怎么樣工作的?

    大多數(shù)園友可能對(duì)“#include”比較熟悉,因?yàn)槲覀儗?xiě)C/C++程序的時(shí)候都會(huì)寫(xiě)的字符串之一,但是它是具體怎么工作的?或者它的原理是什么呢?
    2013-01-01
  • C++面向?qū)ο笾袠?gòu)造函數(shù)使用詳解

    C++面向?qū)ο笾袠?gòu)造函數(shù)使用詳解

    學(xué)習(xí)過(guò)C語(yǔ)言的小伙伴知道:C語(yǔ)言是面向過(guò)程的,關(guān)注的是過(guò)程,分析出求解問(wèn)題的步驟,通過(guò)函數(shù)調(diào)用逐步解決問(wèn)題,這篇文章主要介紹了C++面向?qū)ο笾袠?gòu)造函數(shù)使用
    2022-10-10
  • C++利用代理模式實(shí)現(xiàn)遠(yuǎn)程代理,虛擬代理和保護(hù)代理

    C++利用代理模式實(shí)現(xiàn)遠(yuǎn)程代理,虛擬代理和保護(hù)代理

    今天給大家簡(jiǎn)單介紹代理模式,一個(gè)很簡(jiǎn)單的設(shè)計(jì)模式,旨在不改變?cè)瓕?duì)象的情況下通過(guò)代理對(duì)象來(lái)控制對(duì)原對(duì)象的訪問(wèn)。代理模式根據(jù)具體情況還可以分為遠(yuǎn)程代理、虛擬代理、保護(hù)代理等,下面來(lái)介紹一下
    2023-04-04
  • 利用Qt實(shí)現(xiàn)仿QQ設(shè)置面板功能

    利用Qt實(shí)現(xiàn)仿QQ設(shè)置面板功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)仿QQ設(shè)置面板功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2022-12-12
  • OpenGL中點(diǎn)Bresenham繪制直線算法

    OpenGL中點(diǎn)Bresenham繪制直線算法

    這篇文章主要為大家詳細(xì)介紹了OpenGL中點(diǎn)Bresenham繪制直線算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 基于linux下獲取時(shí)間函數(shù)的詳解

    基于linux下獲取時(shí)間函數(shù)的詳解

    本篇文章是對(duì)linux下獲取時(shí)間的函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言 深入淺出講解指針的使用

    C語(yǔ)言 深入淺出講解指針的使用

    指針是C語(yǔ)言中一個(gè)非常重要的概念,也是C語(yǔ)言的特色之一。使用指針可以對(duì)復(fù)雜數(shù)據(jù)進(jìn)行處理,能對(duì)計(jì)算機(jī)的內(nèi)存分配進(jìn)行控制,在函數(shù)調(diào)用中使用指針還可以返回多個(gè)值
    2022-03-03
  • C++全面精通類(lèi)與對(duì)象

    C++全面精通類(lèi)與對(duì)象

    類(lèi)和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱。對(duì)象是對(duì)客觀事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-05-05

最新評(píng)論