前期准备工作:
1.首先当然是要有VS2008+Qt的开发环境,这个没什么好说的,一搜一大把的例子。
2.安装MySQL,最好是4以后的版本,再一个就是安装时选择最全的安装方式,这样才有include和lib。
3.由于MySQL先天的路径问题(就是它的路径里面有空格),我们需要把它的include和lib目录复制出来,放在一个没有空格的目录下。
比如在C盘建立mysql文件夹,把include和lib放进去。
4.把lib/opt/libmysql.dll放到一个环境变量能认识的地方,否则会造成驱动加载时,找不到这个dll文件。
5.在环境变量PATH中加入C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin,否则有可能在编译过程中发生rc.exe错误。
剩下的就都是在命令行下执行了:
6. 执行 D:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
这个批处理文件的作用是设置环境变量的批处理,由于该批处理仅设置本次命令行窗口中的环境变量,并未修改注册表,所以每次打开个新命令行窗口都要运行一次批处理才可获得其中包含的环境变量设置,所以执行完后,不要关闭该命令行窗口, 剩下的操作依然在这个窗口中进行。
7. cd D:\Qt\4.7.3\src\plugins\sqldrivers\mysql\
8. qmake -o makefile "INCLUDEPATH+=c:\MySQL\include" "LIBS+=c:\MySQL\lib\opt\libmysql.lib" mysql.pro
这里面的路径就是第3步里面创建的目录
注意上面的opt目录,我在用5.5版本的MySQL的时候就没有这个目录,libmysql.lib就在lib地下,所以这种情况就不用加opt了。
9. nmake release debug
到这里,其实MySQL的驱动已经编译完了,但是可能编译出来的动态链接库没有自动拷贝到 D:\Qt\4.7.3\plugins\sqldrivers 中去,没关系,我们手动从
D:\Qt\4.7.3\src\plugins\sqldrivers\mysql\release 和 D:\Qt\4.7.3\src\plugins\sqldrivers\mysql\release\debug
里面把qsqlmysql4.dll、qsqlmysql4.lib、qsqlmysqld4.dll、qsqlmysqld4.lib拷到 D:\Qt\4.7.3\plugins\sqldrivers 里面就行了。
好了,下面来个测试程序试一下:
#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("1111");
if (!db.open())
qDebug() << "Failed to connect to root mysql admin";
return a.exec();
}