这两天帮一兄弟做毕业设计,其中牵扯到数据库的使用,准备用Qt来做了,对于数据库的选择则是简单的来,就用mysql了,因为说实话:我以前从来没接触过具体的数据库,就知道些书本上的什么select语句。这次也算是全新的小尝试。
这其中最需要解决的就是两者怎么关联的问题,因为版权的问题:Qt没有提供MySql的对应驱动,而只是给出了源码,所以需要我们自己来编译驱动,这也是最能卡人和最有意思的地方:
在Qt4的assistant上如下说明:
①:You need to get the MySQL installation files. Run SETUP.EXE and choose "Custom Install". Install the "Libs & Include Files" Module.
②:Build the plugin as follows (here it is assumed that MySQL is installed in C:/MYSQL):
cd %QTDIR%/src/plugins/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+=C:/MYSQL/INCLUDE" "LIBS+=C:/MYSQL/LIB/OPT/LIBMYSQL.LIB" mysql.pro
nmake
基本上照着这个步骤来就是了,但这其中要注意以下几点:
1:首先安装mysql的时候一定要完全安装,而不能一路next下去,否则编不过去。
2:在执行makefile时:可能会提示说缺少很多mysql的头文件什么的,那这个时候需要添加以下mysql/include路径到环境变量path下,或者直接全部把对应这个文件夹下的头文件都拷贝到VC对应的头文件夹下。
p3:我个人的配置在nmake的时候提示说是:
"fatal error LNK1104: cannot open file 'C:/Program.obj'"
这个问题就很有意思了,查了一下,主要是系统会把你指定的path路径进行修改!
网上有一段解释很经典:
例如你要加入一个ABC.lib的链接库,完整路径为"C:/Program Files/ABC.lib",
如果被IDE改写的话会变成"C:/Program" "Files/ABC.lib"
相应的命令行变成Link (...) "C:/Program" "Files/ABC.lib"
那么链接器会要求提供"C:/Program.obj"文件,由于该文件不存在,所以会
返回上面的调试信息'LINK : fatal error LNK1104: 无法打开文件 “C:/Program.obj”'!
原来都是路径中某个目录名中含有空格的缘故,系统给自动篡改了。我自己电脑上边:包括vc和mysql都是默认安装到了 c:/rogram files/目录下,系统一篡改结果就导致出现了原本不存在的program.obj这么个文件。
那么解决这个问题便变得简单了,第一种解决办法就是把VC mysql都装到没有空格的目录下,但是我的已经装了;而第二种办法就是想办法把目录中的空格给去掉!方法如下:
WINODWS系统下:对于一个目录下的若干个文件夹,系统会给他们分配一个短名,这类似于C++中的引用,可以同时用于表示这个文件夹。那么我们只要把这些带空格的文件夹名用起短名代替即可! 而查询一个目录下文件夹短名的order是: dir /x 运行此命令后系统会显示出文件夹名和其对应短名来。
有了可以替代的短名之后,下一步就是对原先的路径进行修改,而对我这里而言:出错是在nmake这一步,而nmake依据的是makefile,所以我们只要把makefile中对应的长名改成短名即可! 但是我们运行前一步生成的makefile是有makefile.debug和makefile.release两个版本的,我试了下,我电脑上是使用的makefile.release版本,你要是不放心,那就把这两个版本的makefile都进行修改,把其中用到的路径中的长路径名全改成对应的短名(我遇到了两个,一个是program files ,一个是/MySQL Server 5.5/,只要把这两个对应修改即可)。
处理完上边这个问题,再来重新nmake clean,nmake一下应该就没问题了。当然了如果你用的不是vc的compiler,这里就不再是nmake,可能是make之类的,具体情况具体对待。
编译成功会生成驱动的库文件,而且会保存在QT的对应系统路径下,我们就不用去管它了,可以直接使用,如果你不放心,那就把他们拷贝到lib文件夹下。
//----------------------------------------------------------------------
有了驱动,下一步是连数据库,这个网上好多人提供了现成的代码,没有太大难度,呵呵~我当时比较抑郁的是:自己不会用数据库,官网下的mysql是纯粹orderline的,没有图形化工具,这个就很抑郁人了,后来同事推荐用mysql front。我集成了一下,很好用。至此:数据库,数据库图形化操作工具,和QT的链接驱动,QT的对应数据库操作都有了,下一步就是简单的call function啦!
QT还是可以集成基本上所有主流数据库的,我估计编译驱动的方式大同小异,不会有太大难度。有兴趣可以玩玩,我觉得用这个还是很省劲的。
//-------------------------------------------------------------------
补充一个很有意思的QT支持中文的问题:在QT里要想直接支持中文,我在网上搜索了很多教程,其中颇多谬误之处,又或者不适合我的情况:
我公司的电脑是英文版的系统,按照网上所说:首先要调用QTextCodec的static function来设置下tr()的编码格式为GB2312,而后把程序中要用到的中文用tr()包含起来。
做完这两步,我这还是现实乱码,可能网上的这个教程是对的,不过是针对中文版OS而言,对于英文版OS我测试了一下,还要多做一步才能显示中文:
要把含有中文字符的这个文件(*.cpp或者*.h)给保存成GB2312格式才行,而系统默认是保存成unicode的。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/douningbo2003/archive/2010/03/22/5406291.aspx
分享到:
相关推荐
win10用Qt5.14.2、VS2017和mysql8.0.21编译出的Qt mysq驱动 MinGW73_64(mysql-8.0.21-winx64) MinGW73_64(mysql-connector-c-6.1.11-winx64) VS2017(mysql-8.0.21-winx64) 如何编译详见...
编译运行Qt连接MySQL数据库程序的时候,控制台会报如下错误:QSqlDatabase: QMYSQL driver not loaded,原因在于Mysql驱动libqsqlmysql.so未能成功安装,linux版本下只安装了sqlite驱动,Mysql驱动需根据安装数据库...
Qt5.2编译的MySQL驱动(最新版:5.6) 编译详解参考:http://blog.sina.com.cn/s/blog_a6fb6cc90101gzm1.html
Qt 添加MySQL驱动教程(成功版)
NULL 博文链接:https://qimo601.iteye.com/blog/1465599
Qt6.5.0MySQL驱动文件已编译版本,直接拿来拷贝进驱动文件夹就能用。不需要繁琐的编译过程。下面为资源文件树状图。 ├─mingw_64QMySQL驱动文件 │ qsqlmysql.debug │ qsqlmysql.dll │ ├─msvc2019_64QMySQL...
windows 平台下的qt 连接mysql数据库所需的驱动。
qt-mysql驱动编译教程及驱动,网上找的教程都太麻烦,而且没一个成功的,自己弄了一个教程,欢迎使用。
详细介绍了window下qt编译mysql驱动,以及注意事项, 希望对程序员有所帮助
如果你安装的QtSDK,没有src目录,自己编译Mysql驱动时需要下载qt源码。 你可以自己参考我提供的博客文章根据自己的版本编译mysql驱动; 也可以直接使用我编译好的,如果你也是qt4.7.4。
由于qt6.0以上版本不提供mysql,而且无mysql.pro文件来编译生成mysql的驱动文件,所以编者这里整理了自己生成的dll文件供大家使用。
使用Qt和mysql编程时,由于qt本身并不支持Mysql驱动,故需要自行编译,本资料是已编译好的qt连接Mysql的驱动,只需将资料解压到/qt/plugins/sqldrivers下即可。
说明:已经编译好的MySql驱动动态库,包含libqsqlmysql.a、libqsqlmysqld.a、qsqlmysql.dll、qsqlmysqld.dll四个文件; 使用方式:将这四个文件复制到D:\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers路径下...
分别编译pc机和ARM开发板的QT下的mysql驱动,并且在ARM开发板上访问数据库成功。
刚开始也不会弄,找了好多资料才整出来的,呵呵 这个是自己编译的,QT是qt-sdk-win-opensource-2009.05.exe(NOKIA出的) 编译器为Mingw MYSQL是5.1版本 其它环境还没测试过,不好意思
linux下mysql的安装卸载和qt-x11的mysql驱动编译
Qt 5.9.3 MySQL和PostgreSQL本地编译驱动,Qt自带的的MySQL和PostGreSQL驱动在程序出包后,报错:“Driver not loaded”,使用本地源码编译生成的驱动替换后即可正常连接数据库。
在VS2010里编译好的qt的mysql驱动DLL qt4.8.4
qt5.7.0源码编译的mysql(32位)驱动,需要学习和研究的朋友可以直接下载使用 qt5.7.0源码编译的mysql(32位)驱动,需要学习和研究的朋友可以直接下载使用 qt5.7.0源码编译的mysql(32位)驱动,需要学习和研究的...