QSqlDatabase: QMYSQL driver not loaded

来源:互联网 发布:淘宝类目数量表 编辑:程序博客网 时间:2024/05/16 07:47

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3

 

Qt5.0开源版本默认是不提供QMySQL驱动的,这篇文档主要讲述Windows环境下如何使用MinGW为Qt5.0安装QMySQL驱动。

 

(1) 安装Qt5.0开源版本的library和source code:

Qt5.0 Library: http://download.qt-project.org/official_releases/qt/5.0/5.0.2/qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe

Qt5.0 Source Code: http://download.qt-project.org/official_releases/qt/5.0/5.0.2/single/qt-everywhere-opensource-src-5.0.2.zip

 

(2) 安装MySQL Installer 5.6.11:

MySQL Installer 5.6.11: http://dev.mysql.com/downloads/installer/

将MySQL安装在C盘自建目录MySQL中,尽量不使用Program files目录(空格)可能引起莫名的路径问题。

 

(3) 打开Qt5.0命令行界面:

启动方式:开始菜单=>>所有程序==>>Qt5.0.2==>>Qt5.0.2==>>MinGW 4.7==>>Qt 5.0.2 for Desktop (MinGW 4.7)

 

(4) 运行以下命令:

这是最重要的一步,确保Source Code和MySQL安装在同一个盘符。

cd C:\Qt\Qt5.0.1\Sources\qtbase\src\plugins\sqldrivers\mysql\

该目录下存在几个文件,其中包括mysql.pro,我们所有的编译工作也正是从此文件开始。

qmake "INCLUDEPATH+=c:\\MySQL\\include" "LIBS+=c:\\MySQL\\lib\\libmysql.lib" -o Makefile mysql.pro

此时,会在当前目录下生成几个Makefile文件和两个文件夹类。

 

此处我们也可将mysql的两路径:

INCLUDEPATH += "C:/MySQL/include"

LIBS += "C:/MySQL/lib/libmysql.lib"

直接加入mysql.pro中,然后运行qmake命令如下:

qmake -o Makefile mysql.pro

 

最后运行:

mingw32-make

如果一切顺利,此时在C:\Qt\Qt5.0.1\Sources\qtbase\plugins\sqldrivers会生成qsqlmysql.dll和qsqlmysqld.dll文件。

 

(5) 配置QMySQL驱动:

拷贝qsqlmysql.dll和qsqlmysqld.dll到C:\Qt\Qt5.0.1\5.0.1\mingw47_32\plugins\sqldrivers目录中

从c:\MySQL\lib拷贝libmysql.dll到C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin,此时大功告成。

 

(6) 测试QMYSQL驱动:

#include <QApplication>

#include <QtSql>

#include <QtWidgets>

#include <iostream>

 

bool createConnection()

{

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setDatabaseName("test");

    db.setUserName("root");

    db.setPassword("123456");

    if(!db.open()) {

        QMessageBox::critical(0, QObject::tr("Database Error"), \

            db.lastError().text());

        return false;

    }

    return true;

}

 

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    if(!createConnection())

        return 1;

    QSqlQuery query("SELECT title, year FROM cd WHERE year >= 1930");

    while(query.next()) {

        QString title=query.value(0).toString();

        int year=query.value(1).toInt()

        std::cerr<<qPrintable(title)<<": "<<year<<std::endl;

    }

    return a.exec();

}

 

E:\QT\chap13\build-QMysqlTest-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\QMysqlTest 启动中...

你好: 1983

周杰伦: 1956

萨顶顶: 1957

 

(7) 好吧,如果你仍然没有成功,可在此直接下载MySQL用于以下Qt版本的驱动:

Qt5.0版本: http://vdisk.weibo.com/s/aMEiEcvN1JUJH

Qt5.1版本: http://vdisk.weibo.com/s/aMEiEcvN1JUJR

 

虽然版本不一样,但是编译MySQL驱动的方法都遵循以上步骤,最后祝你好运。

0 0