Qt连接mysql解决方案

在网上差了无数个资料,最后终于在自己电脑上成功实现Qt编译mysql驱动,这个过程十分痛苦。。。。

第一步:我们首先要正确的安装mysql,我看了资料,都说装mysql路径不能有空格,而我之前默认安装,带了空格,所以我直接卸载了原来的(一定要卸载干净,卸载后必须把原来安装的文件夹目录以及C:\Program Files和C:\ProgramData下相关的MySQL删掉,还要把注册表里与MySQL相关的项也删掉),安装过程选择custom选项

ps:注册表删除MySQL方法:打开“运行”-->输入“regedit” -->点击“编辑”-->把值和数据的勾去掉,输入“mysql",-->点击"查找下一个"-->把mysql相关项给删除

第二步:设置环境变量

G:\Qt\opensource\bin;
G:\Qt\qtcreator\bin;
G:\Qt\MinGW\MinGW4.4\bin;//这里我之前忘了装哪个版本了,在这里都把环境变量设置上防止出错
G:\Qt\MinGW\MinGW4.8\bin;//应该是这个
D:\MySQL\include;
D:\MySQL\lib;//网上好多都是还有opt这个目录  D:\MySQL\lib\opt;  但是我的没有,我的libmysql.lib直接lib文件夹下了,不在opt下
第三步:打开Qt Command Prompt
输入第一条命令:cd %QTDIR%\src\plugins\sqldrivers\mysql 后按回车看到:


然后输入第二条命令: qmake "INCLUDEPATH+=D:\MySQL\include" "LIBS+=D:\MySQL\lib\libmysql.lib" mysql.pro


出现:WARNING: (internal):1: Unescaped backslashes are deprecated.错误这样解决:
这种错误的解决方法如下:
    1、进入目录G:\Qt\opensource\src\plugins\sqldrivers\mysql,用记事本打开mysql.pro,在第二行添加如下的信息:INCLUDEPATH+="D:\MySQL\include" LIBS+="D:\MySQL\lib\libmysql.lib" 保存即可
    2、运行cmd,进入到G:\Qt\opensource\src\plugins\sqldrivers\mysql这个目录,然后输入:qmake -o Makefile mysql.pro此时也许有这样的提示:
      WARNING: g:\Qt\opensource\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped backslashes are deprecated.
      WARNING: g:\Qt\opensource\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped backslashes are deprecated.
      WARNING: g:\Qt\opensource\src\plugins\sqldrivers\mysql\mysql.pro:2: Unescaped backslashes are deprecated.
但是不影响结果
第三步:输入 mingw32-make
这是可能会有这样的错误:g:/Qt/MinGW/MinGW4.8/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe cannot find -1libmysql
解决办法:将D:\MySQL\lib中的libmysql.lib拷贝到G:\Qt\MinGW\MinGW4.8\lib中。
在执行一遍mingw32-make,会提示debug\libqsqlmysqld4.a 等 ,然后我们去G:\Qt\opensource\src\plugins\sqldrivers\mysql\debug下看到生成了libqsqlmysqld4.a和qsqlmysqld4.dll这两个文件,把他们复制到G:\Qt\opensource\plugins\sqldrivers下发现形成这样:

第四步:测试qt是否连接mysql成功:
新建一个qt 控制台项目
记得新建工程后需在 connectmysql.pro 工程文件中增加 QT += sql
#include 
#include 
#include 

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//添加数据库驱动
   db.setHostName("localhost");
   db.setDatabaseName("info");//这里要写你已经存在了的数据库名
   db.setUserName("root");
   db.setPassword("253321");

   bool ok = db.open();
   if(ok)
   {
       qDebug()<<"success!";
   }
   else
   {
        qDebug()<<"fail!";
   }
    return a.exec();
}





你可能感兴趣的:(QT)