QT5.13连接MySQL即打包过程

环境:

Win10+QT5.13+MySQL5.5
  • QT5.13生成MYSQL数据库驱动

因QT5.13无mysql数据驱动,因而需要先生成所需要的MYSQl驱动

1、打开QT自带的mysql源码工程,C:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro(安装目录根据实际调整)

打开工程后调整mysql.pro文件,增加如下内容

//该路径是mysql的头文件路径
INCLUDEPATH +="C:/Program Files/MySQL/MySQL Server 5.5/include"
//这是MySQL的库文件路径
LIBS +="C:/Program Files/MySQL/MySQL Server 5.5/lib/libmysql.lib"

//为了方便查找,不妨增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR  = ../mysql/lib/

然后注释掉mysql.pro文件中的  QMAKE_USE += mysql(我的环境不注释会报错)

#QMAKE_USE += mysql

编译此工程,然后会在mysql.pro的同级目录的lib下生成驱动文件

将上面的四个文件拷贝到QT的数据库驱动文件夹里面C:\Qt\Qt5.13.0\5.13.0\mingw73_64\plugins\sqldrivers

至此,QT5.13安装myql驱动完成。可以编写如下测试程序


bool SqlBase::testMySql(QString ip, QString username, QString password, int port, QString dbName)
{
    bool connect=false;
    qDebug() << "可用的驱动: ";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver,drivers)
    {
        qDebug() << driver;
    }

    //载入Mysql驱动,打开本地数据库
    QSqlDatabase db2=QSqlDatabase::addDatabase("QMYSQL");
    db2.setHostName(ip);//如果连接远程数据库,就把IP换成对方的,并且远程防火墙是关闭的
    db2.setPort(port);
    db2.setUserName(username);//这个用户是默认的,如何打开这个用户,自己百度
    db2.setPassword(password);//这个是我的口令
    db2.setDatabaseName(dbName);

    if(!db2.open()){
        qDebug()<<"The mysql database connect faile!";
    }else{
        QSqlQuery query(db2);
       query.exec("select * from test");
       while(query.next()){
           qDebug()<<query.value("name").toString();
       }
        qDebug()<<"The mysql database connect success !";
        db2.close();
        connect=true;
    }
    return connect;
}
  • 打包连接mysql数据库的QT工程

   首先用release模式对需要打包的QT工程进行编译执行

然后找到release的编译后的目录,找到.exe文件,将其拷贝到一个新的文件夹下,我是直接在E盘下建立了qtTest文件夹;

在windows的程序栏中打开Qt15.3(MinGw 7.3.0 64-bit) 进入到qtTest目录下,然后执行windeployqt test.exe,这样,QT会将所执行文件所依赖的库自动复制到此目录下

至此,双击text.exe文件即可直接运行。

不过发现一个问题,之前生成的mysql的几个驱动文件并没有拷贝过来,所以需要手动将前面生成的mysql的四个驱动文件拷贝到text.exe的同级目录下(按理说应该是放到sqldriver目录下的,可是发现放到这个目录下依然连不上mysql数据库,于是放到test.exe的同级目录下),若不行,可以试着放在qtTest\sqldriver目录下试试,根据自己的实际情况调整,我是放在同级目录下可以的。

此外,若用的配置文件配置数据库连接信息,则将配试文件例如:config.ini文件放在test.exe同级目录即可。

发布了68 篇原创文章 · 获赞 34 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/yyj108317/article/details/104314163
今日推荐