Qt连接MySQL问题

在Qt里面连接MySQL数据库出现一连串问题,下面一一说明。

操作系统:Win7

在Qt里面连接MySQL数据库:

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName(":memory:");
    if (!db.open())
    {
        QMessageBox::critical(0, "Cannot open database", "Unable to establish a connection", QMessageBox::Cancel);
        return false;
    }

没有成功。后台输出:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

按照网上的教程,写了下面的代码,在创建连接之前调用:

#include <QPluginLoader>

void loadMySqlDriver()
{
    QPluginLoader loader;
    // MySQL 驱动插件的路径
    loader.setFileName("C:\\Qt\\Qt5.6.3\\5.6.3\\msvc2013_64\\plugins\\sqldrivers\\qsqlmysqld.dll");
    qDebug() << loader.load();
    qDebug() << loader.errorString();

}

此函数输出的是:

false
“Cannot load library C:\Qt\Qt5.6.3\5.6.3\msvc2013_64\plugins\sqldrivers\qsqlmysqld.dll: %1 不是有效的 Win32 应用程序。”

看了一下,自己安装的MySQL是64bit的,于是重新安装了一个32bit的MySQL(5.5版本)。

结果还是不行。。。发现自己的Qt也是64bit的(Qt 5.6.3 MSVC2013 64bit)。于是又装了32bit的Qt(Qt 5.8.0 MSVC2013 32bit)。

loadMySqlDriver()中的dll文件路径也做相应修改。现在,loadMySqlDriver()输出的是:

false
“Cannot load library C:\Qt\Qt5.8.0\5.8\msvc2013\plugins\sqldrivers\qsqlmysqld.dll: 找不到指定的模块。”

解决办法:把C:\Program Files (x86)\MySQL\MySQL Server 5.5\lib中的libmysql.dll复制到C:\Qt\Qt5.8.0\5.8\msvc2013\bin中。

现在,加载没有问题了,loadMySqlDriver()输出:

true
“Unknown error”

但连接还是open不开。。。我是照书上写的db.setDatabaseName(":memory:");这句话意思是使用在内存中建立的数据库,程序运行结束就销毁。仔细一看,书上用的是QSQLITE,应该是QMYSQL不支持内存中创建数据库。

我将它改成自己建立的一个数据库db.setDatabaseName("students");

结果终于连接上了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值