日志
qt5.0.2连接mysql
2013-10-27 16:09
在过去的一个星期中,我用了很多时间去编译mysql驱动,从百度、谷歌等网站搜了N多次,试尽了N多种方法,我从QT4.7、Qt4.8.0、Qt4.8.5、Qt5.0.2到Qt5.1.1各个版本的Qt都 试了个遍,后来就在想是不是操作系统的原因,我又花了一些时间去编译在不同的操作系统(win764bit/xp/ubuntu12.04),结果没一个是可行的。踏破铁鞋无觅处,得来全不费功夫。 首先声明一下,本次实验是在xp系统下完成的,对于win7下的目前还没有测试过,不过本人觉得,win732位的编译与xp下应该是一样的…… Qt5.0.2开源版本默认是不提供QMySQL驱动的,在这篇文档中主要讲述xp环境下如何使用MinGW为Qt5.0编译QMySQL驱动。 第一步:安装Qt5.0.2 下面一个一下载QT的网址 http://download.qt-project.org/official_releases/qt/5.0/5.0.2/qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe 这里我把Qt安半装在:C:\Qt 第二步:安装mysql (在这里我所安装的是版本是mysql-5.5.29-win32) 将MySQL安装在C盘自建目录MySQL中,尽量不使用Programfiles目录(空格)可能引起莫名的路径问题。(这是网上查找资料时发现的一句话,没有测试过究竟是不是真的) 在xp里我的mysql安装的路径是: C:\mysql 到这里,我把Qt及mysql都安装完毕;首先测试一下mysql: #include <QtGui/QApplication> #include <QtSql> #include <QDebug> void openDb(){ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("kechenshiji");//确认数据库存在与否 db.setUserName("root"); db.setPassword("a"); //记得改密码哦 bool ret = db.open(); if (ret){ qDebug("open db ok"); QSqlQuery query( "SELECT xuelimingchen FROM xuelibiao" ); while(query.next()) { qDebug()<<query.value(0).toString(); } } else { qDebug("open db failed"); qDebug() << db.lastError().text(); } } int main(int argc, char *argv[]){ QApplication a(argc, argv); openDb(); return a.exec(); } 这是一段测试mysql驱动的程序。 在Qt中运行这段程序,会报以下的错误: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase:available drivers: QSQLITE QODBC QODBC3 即也就是说mysql驱动没有加载成功。 接下来的事情当然就是这编文档的主题了: 第三步:打开Qt5.0.2命令行界面 启动方式:开始菜单=>>所有程序==>>Qt5.0.2==>>Qt5.0.2==>>MinGW4.7==>>Qt 5.0.2 for Desktop (MinGW 4.7) 第四步:运行命令 进入目录: Cd C:\Qt\Qt5.0.2\5.0.2\Src\qtbase\src\plugins\sqldrivers\mysql 要mysql文件夹中有内个文件,其中.pro文件是接下来要编译的文件, qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\libmysql.lib"-o Makefile mysql.pro 编译完成后,在mysql文件夹中会生成几个Makefile文件和.moc、.obj文件夹。 最后一步运行: mingw32-make 如果运行完这一步在命令行界面不显示任何错误时 便是晴天。 至此,mysql驱动已编译完成。相应的会在C:\Qt\Qt5.0.2\5.0.2\Src\qtbase\plugins\sqldrivers 文件夹下生成qsqlmysql.dll和qsqlmysqld.dll文件。 如果没找到qsqlmysql.dll和qsqlmysqld.dll,呵呵…… 确定没有漏到以上的每一步骤,或者你的系统是64位(再次声明本方法适用于32位系统)…… 第五步:配置mysql驱动 拷贝qsqlmysql.dll和qsqlmysqld.dll到C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\sqldrivers文件夹下,同时从C:\mysql\lib目录下复制文件libmysql.dll到目录C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin, 终于到这一步了,宣布mysql驱动编译完成…… 轻松一刻:测试第二步中的程序 运行结果: C:\zwy\qt\build-mysql-Desktop_Qt_5_0_2_MinGW_32bit-Release\release\mysql启动中... "无学历" "小学" "初中" "中专" "高中" "大专" "本科" open db ok |