Qt5.15 连接MySQL数据库的实现策略

Qt5.15 连接MySQL数据库

Qt5.15 的QSqlDatabase 类中并没有支持MySQL数据库的驱动,需要用户自己添加。

这就需要重新编译下mysql.pro

测试环境:

QT版本:QT 5.15.0
MySQL版本:mysql 5.5.55

连接

重新编译mysql.pro。

1、打开Qt自带的mysql.pro
文件地址在Qt的安装目录下: “C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\mysql”

2、修改mysql.pro

  // 注释该语句
   #QMAKE_USE += mysql   

  //添加
 include(C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\configure.pri)    

 //继续添加
 LIBS += "D:\Program Files\MySQL\MySQL Server 5.5\lib\ libmysql.lib"     
INCLUDEPATH +="D:\Program Files\MySQL\MySQL Server 5.5\include"         
 DEPENDPATH += D:\Program Files\MySQL\MySQL Server 5.5\include   

mysql.pro 修改后如下:

include(C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\configure.pri)    

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql    // 注释该语句

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

LIBS += "D:\Program Files\MySQL\MySQL Server 5.5\lib\ libmysql.lib"     
INCLUDEPATH +="D:\Program Files\MySQL\MySQL Server 5.5\include"         
DEPENDPATH += D:\Program Files\MySQL\MySQL Server 5.5\include           

include(../qsqldriverbase.pri)


3、构建或者运行

这时会报错,
在这里插入图片描述

忽略此问题。

在计算机C盘下会产生如下的几个文件
在这里插入图片描述
然后,将libqsqlmysql.a 、qsqlmysql.dll 复制到 C:\Qt\5.15.0\mingw81_64\bin 下

测试

编写测试用例

1、新建widget项目

2、 在.pro 文件中添加

QT += sql

3、 修改main.cpp

#include <QApplication>
#include <QMessageBox>
#include <QSqlError>
#include <QTextCodec>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
bool creatConnect();

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    //QTextCodec::setCodecForLocale(codec);

    if(!creatConnect())
    {
       // return 1;
    }

    qDebug() << "Available drivers:";

    QStringList drivers = QSqlDatabase::drivers();

    foreach(QString driver, drivers)
        qDebug() << "\t "<< driver;

    qDebug() << "End";

    QSqlQuery query;
    QString sql = "select * from test1;";
    qDebug() << sql;
    query.exec(sql);
    while(query.next())
    {
        qDebug()<<query.value(0).toString()<<query.value(1).toString();
    }
    return a.exec();
}

bool creatConnect()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3307);
    db.setDatabaseName("test22");
    db.setUserName("root");
    db.setPassword("123456");

    bool ok = db.open();//建立数据库连接
    if(!ok)
    {
        QMessageBox::critical(0,QObject::tr("连接数据库失败!!!"),db.lastError().text());
        return false;
    }
    else
    {
        QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("连接数据库成功!!!"));
        return true;
    }
}

注意:这里的数据库连接的项目中与MySQL安装过程中的配置要一致,如端口号,数据库名称、登录账号及密码。

4、运行

测试成功,会弹出对话框:
在这里插入图片描述

可以看到,MySql的驱动也已经添加。
在这里插入图片描述

总结:

  • 1、本人在调试过程中曾出现,MySQL驱动以添加,但是数据库还是连不上的情况,最后还是重新卸载MySQL,然后重装MySQL后
    才连接成功。
  • 2、网上也有介绍将MySQL安装目录lib 文件夹下的文件 libmysql.dll 复制到 Qt的bin
    目录下,本人亲测未能有效。我也对照过MySQL5.5.55 的版本,是64位的。Qt 的编译是MInGW_64,可以确定不是版本问题
  • 3、本人也曾从MySQL官网上下载https://dev.mysql.com/downloads/connector/c/
    下载mysql-connector-c,但是在其lib目录中并没有找到文件“libmysql.dll”。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值