方法/步驟
創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競(jìng)爭(zhēng)力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都做網(wǎng)站、網(wǎng)站建設(shè), 我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。
1
下載mysql
C鏈接庫(kù)
選擇C的鏈接庫(kù)
2
將C的連接庫(kù)解壓到到C:/mysql
目錄下
3
我的QT
安裝在C盤(pán)目錄下,版本號(hào)是4.8.6
所以打開(kāi)目錄
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
4
將C:/mysql/lib/libmysql.dll
和C:/mysql/lib/libmysql.lib
復(fù)制到此處。
5
編輯目錄下的mysql.pro文件
添加
INCLUDEPATH+="C:/mysql/include"
LIBS+="C:/mysql/lib/opt/libmysql.lib"
運(yùn)行qt的控制臺(tái)窗口,方便使用qmake
切換到目錄下
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
執(zhí)行qmake
運(yùn)行VS2010的控制臺(tái)工具
切換到
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
目錄下
執(zhí)行nmake
和nmake
release
是nmake不是make
這樣在C:\QT\4.8.6\src\plugins\sqldrivers\mysql
目錄下的debug
目錄和release
目錄下分別會(huì)產(chǎn)生
qsqlmysqld4.dll
qsqlmysqld4.lib
qsqlmysql4.dll
qsqlmysql4.lib
將上面提到的四個(gè)文件復(fù)制到
C:\QT\4.8.6\plugins\sqldrivers
最后把
C:\mysql\lib\opt\libmysql.dll
C:\mysql\lib\opt\libmysql.lib
復(fù)制到
C:\Windows\system32\
目錄下。
最后測(cè)試mysql
可不可以在qt中正常使用
新建一個(gè)qt
控制臺(tái)項(xiàng)目
輸入以下代碼
#include
QCoreApplication
#include
QDebug
#include
qstring.h
#include
qstringlist.h
#include
qsql.h
#include
qsqldatabase.hint
main(int
argc,
char
*argv[])
{
QCoreApplication
a(argc,
argv);
qDebug()
"Available
drivers:";
QStringList
drivers
=
QSqlDatabase::drivers();qDebug()
drivers;return
a.exec();
}
運(yùn)行測(cè)試一下,看看有沒(méi)有圖片中紅圈圈中的兩項(xiàng)內(nèi)容
1: windows 下登陸mysql 命令行,(1)進(jìn)入cmd (2) cd mysql 安裝路徑/mysqlserver5.6/bin (3) 使用命令mysql -u root -p 然后根據(jù)提示輸入密碼 進(jìn)入命令行 select user(); //顯示當(dāng)前用戶(hù) 2: 在同一臺(tái)電腦上利用Qt 訪問(wèn)數(shù)據(jù)庫(kù) (1)顯示當(dāng)前電腦上安裝的數(shù)據(jù)庫(kù)驅(qū)動(dòng) QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() "/t" driver; (2)QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");/對(duì) QMYSQL進(jìn)行操作,本函數(shù) 有第二個(gè)參數(shù) 連接名 db.setHostName("localhost");//或127.0.0.1 本主機(jī) db.setPort(3306); db.setDatabaseName("example"); //對(duì)數(shù)據(jù)庫(kù)example進(jìn)行操作 db.setUserName("wangxuetao"); //wangxuetao是一個(gè)對(duì)example數(shù)據(jù)庫(kù)有操作權(quán)限的賬戶(hù) db.setPassword("3791948"); 于是mysql中增加一個(gè)賬戶(hù)可使用 Grant all previliges on *.* to ‘wangxuetao’@’localhost’ identified by ‘3791948’ with grant option; Flush privileges; //更新 (3)db.open() 函數(shù)可由于檢測(cè)數(shù)據(jù)庫(kù)是否連接成功 coutDBConnection(); 2. m_sqlquery = new QSqlQuery("",m_sqldb);//statement 1:connect db with sql query 3. if(result == R_OK) 4. { 5. result = m_sqlquery-exec("INSERT INTO children(fname,age) VALUES('A nn2',13)"); 6. if(!result) 7. qDebug()" [OK] ""EXEC successed"; 8. m_sqlquery-exec("SELECT * FROM children c LIMIT 0,1000"); 9. while(m_sqlquery-next()) 10. { 11. qDebug()value(0).toString()value(1). toString(); 12. } 13. }
Qt項(xiàng)目里用到了mysql,運(yùn)行后報(bào)錯(cuò):
查閱資料知道需要配置mysql驅(qū)動(dòng),本以為幾分鐘解決的事情,沒(méi)想到開(kāi)啟了惡魔經(jīng)歷,整整兩天時(shí)間,mmp!
Stop! 廢話(huà)別說(shuō)啦,入正題:
首先,Qt mysql的安裝和環(huán)境配置就略了,一搜一大把。
不過(guò)注意兩點(diǎn):
先進(jìn)入到/Users/ing/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers目錄下,執(zhí)行:
這里確保qmake用的qt里的就行
其實(shí)你可以配置下qt相關(guān)的環(huán)境變量,在bash_profile里添加:
然后,source ~/.bash_profile ,還有別忘了 source ~/.zshrc
執(zhí)行成功的話(huà)會(huì)輸出:
根據(jù)提示 依次執(zhí)行:
make sub-mysql
make
make install
進(jìn)入/Users/ing/Qt5.14.2/5.14.2/clang_64/plugins/sqldrivers下執(zhí)行,查看鏈接庫(kù):
輸出:
此時(shí),運(yùn)行qt程序 依舊報(bào)錯(cuò)。
根據(jù)查閱的資料,問(wèn)題出在
網(wǎng)友們所說(shuō)的“詭異”的路徑那一行(你的輸出可能和我的不一樣的,但問(wèn)題應(yīng)該一樣) ,也就是有 libmysqlclient.21.dylib 這行。
另外查了下 @repath 的含義 意思是說(shuō) 不能明確的指向。。。所以 這里就需要將libmysqlclient.21.dylib 指向扳到正確的道路。
方法就是利用 install_name_tool -change
執(zhí)行
這里一定要注意順序,剛開(kāi)始我就是順序搞錯(cuò)了,死活就是不行,最后跑到官方論壇里用蹩腳的英語(yǔ)發(fā)帖求教也無(wú)果,最后還是一遍的重試,一遍的檢查才發(fā)現(xiàn)的。一天就這么浪費(fèi)了。
此刻在運(yùn)行qt程序 ,就不會(huì)再報(bào)上面的錯(cuò)誤了。
撒花,禮花搞起~~~