qt与mysql连接(驱动插件问题) 完美版

接上一篇


3、下面是怎样编译:

(如果你的编译有问题,google--“QT链接mysql驱动程序出现的问题详解”可能是环境变量的问题)(部分转)
方法一:最简单的方法:
若是QT SDK,需先下载对应的qt-everywhere-opensource-src-4.8.1.zip,将其中的src文件拷到QT SDK安装目录下,已获得要编译的mysql.pro文件。若是Qt creater在安装目录下找到src文件即可。


Open Source版本的QT不包括MySQL的驱动,需要时可以自己编译生成。下面以我的开发环境为例介绍自己编译MySQL驱动的步骤。

1、建立目录C:\cyn,将%MYSQL%\MySQL Server 5.5\目录下的include和lib目录拷贝到C:\cyn目录下,完成后如下图;


2、启动QtCreator,打开工程C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\mysql\mysql.pro,目标设置见下图;

3、工程导入后,打开mysql.pro文件,并在最后增加两行:
INCLUDEPATH+=C:/cyn/include
LIBS += -LC:/cyn/lib/ -llibmysql(注意在windows下路径都是\(右斜杠),而qt中都是/….在用dos qmake时候要用\)

如下图:


4、分别选择调试和发布模式构建程序,即可在debug和release目录下生成相应的dll文件




5、将第四步中生成的两个dll拷贝到C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers目录下


6、将C:\cyn\lib\libmysql.dll拷贝到C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin目录下


7、测试,运行下面这段程序,在应用程序输出里看到open db ok,大功告成!

#include <QtGui/QApplication>
#include "MainWindow.h"
#include <QtSql>
#include <QDebug>
void openDb()
{ 
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
db.setHostName("localhost"); 
db.setDatabaseName("test"); //test为Mysql中的schema名 
db.setUserName("root"); 
db.setPassword("root"); 
bool ret = db.open(); 
if (ret) 
{
qDebug("open db ok"); 
} 
else 
{
qDebug("open db failed"); 
qDebug() << db.lastError().text();
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
openDb();
MainWindow w;
w.show();
return a.exec();
}



方法二:在dos下编译
【步骤一】
先下载 qt-everywhere-opensource-src-4.8.0.zip 解压后把该文件夹下面的整个src文件夹复制到QT路径中
【步骤二】
复制mysql路径下面的include和lib文件夹到一个没有空格的路径下(比如C:\mysql)
这步的原因是mysql的默认安装路径中含有空格,这会造成qmake的失败 = =
如果你选的安装路径没有空格,则可以忽略这一步
【步骤三】
在dos下cd到你的QT路径\src\plugins\sqldrivers\mysql(例如我的路径即为C:\QtSDK\src\plugins\sqldrivers\mysql)
【步骤四】
输入 
同时把C:\mysql\lib\libmysql.lib复制到system32中!(拷到相应的C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin也可)
1)cd C:\QtSDK\QtSources\4.7.3\src\plugins\sqldrivers\mysql\
2) qmake "INCLUDEPATH+=c:\mysql\include" "LIBS+=c:\mysql\lib\libmysql.lib" -o Makefile mysql.pro()不加-o makefile 也可
qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\libmysql.lib" mysql.pro(蓝色是你建的include和lib文件夹的父文件夹或者你的mysql安装文件路径不含空格的话直接用你的安装路径)
这个时候在你的QT路径\src\plugins\sqldrivers\mysql下面,会出现MakeFile等文件。
3)mingw32-make

4)qmake "INCLUDEPATH+=c:\mysql\include" "LIBS+=c:\mysql\lib\libmysql.lib" -o Makefile mysql.pro "CONFIG+=release"这时在release文件夹下生成相应驱动插件

5)mingw32-make 
然后将在C:\QtSDK\src\plugins\sqldrivers\mysql路径下的debug release文件夹下的

这两个文件复制到C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers下(这里若是Qt creater则找到相应文件夹即可)



测试:

#include <QtGui/QApplication>
#include<QtSql>
#include<QLabel>
#include<QSqlDatabase>
bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("cai");
db.setUserName("root");
db.setPassword("mysql123");
if (!db.open())
return false;
db.close();
return true;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel* label = new QLabel;
label->setWindowTitle("QT Database");
if (createConnection())
label->setText("connection success...");
else
label->setText("connection failed...");
label->show();

return a.exec();
}



转载请注明出处(younghz)。


你可能感兴趣的:(qt,经验)