• 8336阅读
  • 7回复

怎样在QtSDk中加载mysql驱动 [复制链接]

上一主题 下一主题
离线benlol
 
只看楼主 倒序阅读 楼主  发表于: 2012-03-11

这实在是一个很坑爹的东西,我研究了3天才搞定,以致于我都不是太清楚到底是哪一步有用。。。但是在这个过程中还是有些步骤具有启迪意义,所以我把我得到的一些经验写上来。
       首先我使用的是QtSDK。里面的QT是4.8.0版本的。是在http://qt-project.org/downloads下载的。一定要下Offline安装啊,online我装了一晚上都没有装成功。
       然后我参考了http://qt-project.org/doc/qt-4.8/sql-driver.html#qmysql-for-mysql-4-and-higher    
                           http://bbs.byr.cn/#!article/CPP/43225
                           http://mobile.51cto.com/symbian-268727.htm
                           http://www.ctocio.com.cn/301/12230301.shtml
      这几个资料。

      然后开始加载驱动,首先遇到问题就是,网上现有的资料都是老版本的QT写的,%QTDIR%的路径都是C:\Qt\2010.05\qt\src\plugins\sqldrivers\mysql,用QTSDK的人就完全不知道该怎么办。我们的路径应该是C:\QtSDK\Desktop\Qt\4.8.0\mingw。
      接着想运行[attachment=7808]命令就发现在C:\QtSDK\Desktop\Qt\4.8.0\mingw这个目录下根本就没有什么src文件夹。于是我就下载了这个东西qt-everywhere-opensource-src-4.8.0.zip。下载的网址我已经找不到了.把这个文件夹里的src文件拷出来粘贴到C:\QtSDK\Desktop\Qt\4.8.0\mingw下,然后我们就有了要用的文件。
      接着我们就开始运行官方说明文档里说的步骤。注意官方给的命令行里的文件路径和实际的有很大的区别。基本上就是下面三步。
      1.首先cd %QTDIR%\src\plugins\sqldrivers\mysql  
      2.接着qmake "INCLUDEPATH+=你的mysql中include文件夹的路径" "LIBS+=你的mysql中libmysql.lib的路径" mysql.pro
      3.再接着用make来编译
      第一步运行的时候会报错,我直接忽略没有管就继续了。好像没有什么影响。
      接着就会开始编译,各种看不懂的信息狂弹。接着发现东西还是没有到位,这是因为编译的结果藏在C:\QtSDK\Desktop\Qt\4.8.0\mingw\src\plugins\sqldrivers\mysql\debug这里。在这个文件夹内找到libqsqlmysqld4.a和qsqlmysqld4.dll两个文件,把他们考到C:\QtSDK\Desktop\Qt\4.8.0\mingw\plugins\sqldrivers这里。然后把qsqlmysqld4.dll文件考到system32。就大功告成了。
      最后用这个测试一下,如果弹出的对话框里面有mysql就成功了。  

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << “Available drivers:”;
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << “\t” << driver;
return a.exec();
}

备注:其中我还做了一个工作
“qt4 for mingw要想编译出qsqlmysql库来,我们先得编译出mingw需要的libmysql.a这个文件来,可使用mingw工具来生成。 mingw -utils包里的reimp命令(如果没有这个命令的话,可从本帖开头处给出的地址中下载这个文件,并把它解压开后的bin目录里的reimp内容拷贝到 mingw的bin目录下面。mysql安装的时候默认的安装路径中有空格,我们得先把它的include和lib目录拷贝到没有空格的路径下,比如C: \mysql下)
CODE: cd c:\mysql\lib\opt reimp -d libmysql.lib dlltool -k -d libmysql.def -l libmysql.a 这时候你会发现你的lib文件夹下面会多出两文件: libmysql.a & libmysql.def (推荐使用mysql5.5,其他的貌似没有libmysql*.lib文件)"但是不知道这个是否真的有帮助。最后说明一下。我的QTSDK里是没有QT command prompt这个东西的。用Qt 4.8.0 for desktop(minGW)就行了。
要是自己想加载驱动的话建议配合http://mobile.51cto.com/symbian-268727.htm和我的这个贴子看,应该就没有问题了。我比较懒写的不成系统。
      
离线ganlainggou
只看该作者 1楼 发表于: 2012-03-15
楼主能不能留一个联系方式,我安装数据库驱动一直不成功,想请教一下
离线stdjgwyc
只看该作者 2楼 发表于: 2012-03-16
驱动无法加载,有两种可能
1、你的机器上的驱动不正确,先确认下,或者重编下驱动,不过这个概率比较小;直接看2;
2、驱动目录位置不正确:
理论上讲,驱动位置应该在qt/plugins/sqldrivers目录下,先确认一下是否在这个目录下。
但是,如果你的机器曾经装过不同版本的QT或者不同位置安装过QT,或者你曾经运行的某个程序指定了插件目录,那么你的系统注册表里可能会遗留这些信息。
解决方法:你需要手工删除遗留信息(不推荐),或者在你的程序中加入目录信息,例如
QString libpath=QString("%1/plugins").arg(QtPath);
QApplication::addLibraryPath ( libpath );
这样就可以找到了
QT交流群群号:2906359,(200人大群,持续升级)
离线benlol
只看该作者 3楼 发表于: 2012-03-19
回 1楼(ganlainggou) 的帖子
QQ:1041932501
离线hxd_618
只看该作者 4楼 发表于: 2012-06-13
你这儿还有4.8.0吗,能发一份给我吗?我在官网上找只有4.8.1的,然后我4.8.1的又弄不出来。QQ340443303
离线qxwq123t

只看该作者 5楼 发表于: 2013-01-01
我发一个刚刚编译好的大家试着用。mysql驱动 mysql.rar (351 K) 下载次数:7
自己编译时要看清楚目录:
D:\qxw\Qt\4.8.4\src\plugins\sqldrivers\mysql 这个是编译所在目录
D:\qxw\Qt\4.8.4\plugins\sqldrivers 这个是最终文件考入的目录(该目录原来就有文件:qsqlite4.dll等)
离线qxwq123t

只看该作者 6楼 发表于: 2013-01-01
在发个头文件和库文件,然后直接在qt中编译。 mysql头文件_库文件.rar (90 K) 下载次数:6
只看该作者 7楼 发表于: 2013-01-11
回 5楼(qxwq123t) 的帖子
谢谢楼主,确实挺好
快速回复
限100 字节
 
上一个 下一个