mysql 5.0.22版本
qt-sdk-win-opensource-2010.02.1.exe
以上软件我都是安装在D盘下,分别是:D:\mysql ,和D:\QT4
下面是编译的过程:
1. 使用reimp生成libmysql.a
下载mingw-utils包
注:mingw-utils 下载地址:http://www.qtcn.org/download/mingw-utils-0.3.tar.gz,然后把bin目录下的文件都拷贝到D:\QT4\mingw\bin目录下
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库
a) 打开dos命令行,进入到D:\mysql\lib\opt,输入命令reimp -d libmysql.lib,回车,运行
b) 接着输入dlltool -k -d LIBMYSQL.def -l libmysql.a,回车,运行,这样在目录D:\mysql\lib\opt下就生成了libmysql.a文件
注:要运行reimp命令和dlltool命令,需要把对应的目录QT4\mingw\bin加到环境变量中(在命令行中直接输入reimp或dlltool,就可以查看各自的用法)
2. 编译mysql驱动
a) 运行Qt-command-prompt(在开始菜单中)
进入目录D:\QT4\qt\src\plugins\sqldrivers\mysql,输入命令qmake -o Makefile "INCLUDEPATH+=D:\mysql\include" "LIBS+=D:\mysql\lib\opt\libmysql.a" mysql.pro,回车,运行(INCLUDEPATH表示mysql源文件目录)
b) 接着输入mingw32-make,回车,运行进行编译
c) 最后在D:\QT4\qt\plugins\sqldrivers目录下生成四个文件,分别是libqsqlmysql4.a,libqsqlmysqld4.a,qsqlmysql4.dll,qsqlmysqld4.dll
最后编写一个简单的测试程序:
#include <QtGui/QApplication>
#include <QtGui>
#include <QtSql>
bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("test");\\数据库名称
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;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("GB2312");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
if(!createConnection())
return 1;
return a.exec();
}
结果:
如果出现了错误:QMYSQL driver not loaded,把libmysql.dll对应的目录(mysql/lib/),加到环境变量中。