为了账号安全,请及时绑定邮箱和手机立即绑定

Qt4.7.3(MinGW Opensource版)windows编译mysql驱动

标签:
MySQL


 鉴于不少朋友索要这个mysql驱动,所以有了此文,授人鱼不如受之以渔。

网上此类帖子文章不少,但大家可能还是碰到这样那样的问题,今天我把我的编译经历尽量详细写出来,以便碰到同样问题时能够减少不必要的弯路。

首先说下我的环境:

 系统:windows xp sp3

QT : (Qt by Nokia v4.7.3 (MinGW OpenSource))

Mysql: 5.1社区版

MinGW用的QtCreator 2.2.1里带的mingw

PATH:

确保有D:\Qt\4.7.3\bin用的qmake.exe

C:\Qt\qtcreator-2.2.1\mingw\bin(mingw32,里面有gcc,g++,make工具和编译链接工具,离不了,呵呵)

d:\Program Files\MySQL\MySQL Server 5.1\bin 这下面有mysql动态库libmySQL.dll

定义了个环境变量QTDIR值D:\Qt\4.7.3表示qt的目录

 

首先注意mysql安装时不要用经典安装,选择完全安装或者自定义把头文件和库勾选上,这样安装后会有for c/c++的头文件和库目录:

 

因为这里我们使用MinGW来编译驱动,mysql提供的这个libmysql.lib我们还不能直接用(如果用微软的编译器就不用这样了),我们需要用个工具转成*.a来用。

工具下载:

 http://www.qtcn.org/download/mingw-utils-0.3.tar.gz

解压我们只用remip.exe这个东西,把他放在你的mingw/bin和那些make.exe放一起就行。

 

cd D:\Program Files\MySQL\MySQL Server 5.1\lib\opt 

转到库目录 

reimp -d libmysql.lib (生成 libmysql.def文件) 

dlltool -k -d libmysql.def -l libmysql.a (生成 libmysql.a文件) 

 

over了,出来这2个东西了。

 

好了需要的kulibmysql.a准备好了

下面开始编译之旅:

来到qt mysql驱动的源程序目录,有个cpp文件和一个qt项目文件。

 

cd %QTDIR%/src/plugins/sqldrivers/mysql

当前目录转到源程序目录。

qmake -o Makefile "INCLUDEPATH+=D:/Progra~1/MySQL/MySQLS~1.1/include" "LIBS+=D:/Progra~1/MySQL/MySQLS~1.1/LIB/OPT/libmysql.a" mysql.pro 

 

得到makefile (注意libmysql.a这个大小写问题,否则会不成功)

 

make 

 

debug里出现了调试版本的了。 

 

make release 

 

release版本 

 

 

 

把这4个文件copy到你的qt驱动目录吧

 

下面来测试下:

 

头文件: 

 

 

#ifndef PRODUCTVIEWERDIALOG_H 

#define PRODUCTVIEWERDIALOG_H 

 

#include <QDialog> 

#include <QSqlDatabase> 

 

#include "ui_productviewer.h" 

 

class ProductViewerDialog:public QDialog,public Ui::products 

    Q_OBJECT 

public: 

    ProductViewerDialog(QWidget *parent=0); 

private slots: 

    void on_queryButton_clicked(); 

private: 

    QSqlDatabase db; 

}; 

 

#endif // PRODUCTVIEWERDIALOG_H 

 

源文件: 

 

 

#include <QtGui> 

#include <QSqlTableModel> 

 

#include "productviewerdialog.h" 

 

ProductViewerDialog::ProductViewerDialog(QWidget *parent):QDialog(parent) 

    setupUi(this); 

    this->db=QSqlDatabase::addDatabase("QMYSQL"); 

    this->db.setHostName("127.0.0.1"); 

    this->db.setUserName("root"); 

    this->db.setPassword("123456"); 

    this->db.setDatabaseName("nwind"); 

 

//点击查询 

void ProductViewerDialog::on_queryButton_clicked() 

    QSqlTableModel *mode  = new QSqlTableModel(this->tableView,this->db);  

    if(this->db.open()) 

    { 

        mode->setTable("nwproducts"); 

        this->tableView->setModel(mode); 

        mode->select(); 

    } 

    else 

    { 

        QMessageBox::warning(this,tr("error"),tr("Database cannot be connected.")); 

    } 

 

程序入口: 

 

 

#include <QtGui> 

#include "productviewerdialog.h" 

 

//主函数  

int main(int argc,char** argv){     

    QApplication app(argc, argv); 

    ProductViewerDialog dlg; 

    dlg.show(); 

    return app.exec(); 

}     

 

 

附件:http://down.51cto.com/data/2358978

©著作权归作者所有:来自51CTO博客作者xcf007的原创作品,如需转载,请注明出处,否则将追究法律责任

mysql数据库Qt4.7.3桌面程序开发


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消