Windows 環(huán)境下使用 Qt 連接 MySQL
如果應(yīng)用只需要連接遠(yuǎn)程數(shù)據(jù)庫,那么本地不需要安裝 MySQL,只需要找到 MySQL 提供的 libmysql.dll 和libmysqld.dll 兩個動態(tài)連接庫,把他們加入到 Qt安裝目錄\5.9\mingw53_32\bin\;默認(rèn) Qt 自帶已編譯好的 qsqlmysql.dll 和 qsqlmysqld.dll (文件路徑為 Qt安裝目錄\5.9\mingw53_32\plugins\sqldrivers\ );兩者如果配套就能成功地讓 Qt 連接上 MySQL。
(我安裝的Qt 版本是 Qt 5.9.0 mingw53_32,文章中提到的一些路徑是我本機(jī)上的路徑,需要進(jìn)行適當(dāng)修改)
一、測試 Qt 與 MySQL 是否能正常連接
假設(shè) Qt安裝目錄\5.9\mingw53_32\bin\ 下已加入了 libmysql.dll 和 libmysqld.dll,進(jìn)行以下測試。
•新建 Qt Widgets Application,修改 main.cpp 的代碼為:
#include "mainwindow.h"
#include <QApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
//建立連接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("yourPassword"); //設(shè)置數(shù)據(jù)庫連接賬號的密碼
bool ok = db.open();
if(ok) qDebug()<<"OK";
else qDebug()<<"False";
return a.exec();
}
•構(gòu)建并運(yùn)行項(xiàng)目,查看應(yīng)用程序輸出
如果輸出 OK,那到此為止了,Qt 與 MySQL 連接正常;如果輸出 False,不出意外是因?yàn)?libmysql.dll、libmysqld.dll 與 qsqlmysql.dll、qsqlmysqld.dll版本不匹配!需要對 qsqlmysql.dll、qsqlmysqld.dll 進(jìn)行修改。
二、添加 MySQL 的libmysql.dll、libmysqld.dll
(注意:Qt msvc2015_64 可以使用32
位、64 位版本的 MySQL 文件,Qt mingw53_32 只能使用 32 位版本的MySQL 文件)
之前提到,如果應(yīng)用只需要連接遠(yuǎn)程數(shù)據(jù)庫,那么本地不需要安裝 MySQL,而只需要用到 MySQL 提供的動態(tài)連接庫 libmysql.dll 和 libmysqld.dll。那么如果不安裝MySQL,怎么獲取那兩個動態(tài)鏈接庫文件?可以這樣做:
•從已安裝了 MySQL 的機(jī)器上拷貝這兩個文件。
•本地臨時(shí)安裝 MySQL,然后保留下需要的文件,卸載 MySQL。
安裝 MySQL 可以去官網(wǎng)下載安裝包,不過我不太喜歡這樣做,因?yàn)楝F(xiàn)在 MySQL 的安裝組件太多太雜,很多東西都是不必要。推薦去一些開源鏡像站上下載對應(yīng)版本,比如說 Tuna、USTC。臨時(shí)安裝 MySQL 之后先不急著卸載,后面編譯 MySQL 驅(qū)動會用到。
三、重新編譯 qsqlmysql.dll、qsqlmysqld.dll
編譯 Qt 關(guān)于 MySQL 的驅(qū)動需要用到 Qt 的源碼,獲取 Qt 的源碼可以使用 MaintenanceTool.exe 下載 Src,編譯驅(qū)動用到的工程文件路徑為 Qt安裝目錄\5.9\Src\qtbase\src\plugins\sqldrivers\mysql\ 。源碼差不多有2G的大小,而編譯驅(qū)動需要用到的工程文件大約幾十M,要是存儲空間和網(wǎng)速不給力,建議只下載
qtbase-opensource-src-5.9.0.zip,需要的工程在 qtbase-opensource-src-5.9.0\src\plugins\sqldrivers\mysql\ 。
用 Qt 打開上面提到的編譯驅(qū)動用到的工程文件,在 mysql.pro 末尾加上這兩句:
INCLUDEPATH += mysql安裝目錄\include
LIBS += -Lmysql安裝目錄\lib\ -llibmysql
構(gòu)建并運(yùn)行項(xiàng)目會在 C 盤下生成 plugins\sqldrivers 目錄,里面包含 qsqlmysql.dll、qsqlmysqld.dll 兩個文件,將它們復(fù)制一份覆蓋原先的兩個文件即可。再次進(jìn)行 Qt 與 MySQL 的連接測試,成功了沒有?
上一篇:數(shù)據(jù)結(jié)構(gòu)與算法 排序(冒泡,選擇,插入)
欄 目:C語言
下一篇:c語言基于stdarg.h的可變參數(shù)函數(shù)的用法
本文標(biāo)題:Windows 環(huán)境下使用 Qt 連接 MySQL
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1354.html
您可能感興趣的文章
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10大數(shù)(高精度數(shù))模板(分享)
- 01-10深入解析Linux下\r\n的問題
- 01-10Linux C 獲取進(jìn)程退出值的實(shí)現(xiàn)代碼
- 01-10解析Linux下的時(shí)間函數(shù):設(shè)置以及獲取時(shí)間的方法
- 01-10深入探討linux下進(jìn)程的最大線程數(shù)、進(jìn)程最大數(shù)、進(jìn)程打開的文
- 01-10基于linux下獲取時(shí)間函數(shù)的詳解
- 01-10深入sizeof的使用詳解
- 01-10Linux下semop等待信號時(shí)出現(xiàn)Interrupted System Call錯誤(EINTR)解決方法
- 01-10深入解析C中的數(shù)值與真假


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求


