时间:2021-07-01 10:21:17 帮助过:8人阅读
鉴于许多同学对Qt编译myql总是不能成功,出现各种问题,今天特此写出本教程,希望能够帮到需要的同学。 首先,需要明白编译的目的和原理。 目的:Qt 5.2版本以前都是不带mysql驱动的,所以需要进行编译mysql数据库驱动,只有编译完成后才能被Qt加载上。如果你
鉴于许多同学对Qt编译myql总是不能成功,出现各种问题,今天特此写出本教程,希望能够帮到需要的同学。目的:Qt 5.2版本以前都是不带mysql驱动的,所以需要进行编译mysql数据库驱动,只有编译完成后才能被Qt加载上。如果你安装的是Qt5.2以后版本的,那就不需要了,因为在后来的版本中,Qt官方增加这一模块。
可以在Qt的安装插件目录下查看自己的驱动是否已经存在。例如我的在目录:
C:\Qt\4.8.2\plugins\sqldrivers。可以看到当前的数据库驱动
一般需要两个就行了。
原理:先看命令:qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\libmysql.lib" mysql.pro
解释:qmake---是Qt中国的一种编译命令,在linux下编程时经常会用到make命令,详情可以百度;INCLUDEPATH----后面的路径是数据库中"include"和"lib"的目录。为什么要将这两个文件复制一份考到其他盘?那是因为mysql在安装的时候默认安装路径中有空格,这在编译过程中是无法通过的,不信的同学可以试一下,不行的话在考到其他盘里面;最后面的mysql.pro---这个是Qt的工程文件,每个Qt工程建立后都会生成一个以.pro结尾的文件,以后打开Qt工程的时候就双击你要打开的.pro结尾的哪个文件,整个工程就打开了。
可能我上面的解释也没有解释清楚大概就是哪个意思。
下面说说具体的过程:
细心的同学就会发现,qmake.自己编译时会出现这个问题:
'qmake' 不是内部或外部命令,也不是可运行的程序或批处理文件
原因:没有给Qt配置环境变量
解决办法:找到Qt的安装目录,我的目录在这儿:
找到这个目录下的这个东西,看见了吧qmake
找不到的话可以这样做:单击桌面Qt程序右键,打开文件路径:
右击打开我的电脑----点击属性---高级系统设置-----环境变量----找到path项---编辑
至此,其他的几个目录页这样配置。在此就不再重复了。
当然最简单最直接的是,不用配置。直接用Qt自带的command进行编译。打开开始菜单,找到Qt comman窗体。比如我的是这个:
进入到Qt的源码目录下的插件目录--驱动目录---数据库目录。注意这个编译的是源码。然后输入开始介绍的哪一行目录---按回车。之后很多同学都说没有反应,那就对了,这一步的目的是为了下一步编译做准备,会生成makefile文件。
因为用的是mingw编译器,所以用mingw32-make命令编译,如果你用的是vs的,那就用nmake编译。
直接输入命令mingw32-make----回车。如果没有错误,这个过程大概需要几十秒钟。接着进行安装:输入命令:mingw32-make install.可以将生成的插件考入对应Qt的目录。你可以查看下驱动目录师是否存在qsqlmysql.dll和libqsqlmysql4.a这两个文件,一般编译成功后就会有的。
此时编写程序会发现,还是没有发现mysql驱动。缺少引导文件。在考一个文件
就是之前你复制的那两个文件,在lib下有个libmysql.dll文件
将其复制到Qt的启动目录。跟前面打开方法一样,在桌面鼠标右击Qt的图标,打开文件位置,然后粘贴进去进行。
至此,mysql编译任务完成。
那怎么知道自己的配置是否成功了呢,最简单的就是写个简单的程序检测下。
建立一个QtGui Qpplication工程。注意包含sql模块(如果没有包含,建完工程后可以自工程中添加,不用担心)。一下是一个简单的测试程序:
需要添加的头文件:#include
qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t "<< driver; qDebug() << "End";把上面的程序写到main函数中即可。
若是配置成功,则在窗口下面会输出一下信息:
看见上面的QMYSQL了吧,说明已经检测到了mysql数据库驱动了。现在可以进行后面的操作了。
首先,为了进行连接数据库,必须创建数据库和数据表,怎么创建呢?这个原理还和大家熟知的sqlserver一样,只不过,稍微有点区别,可能是命令大家还不熟悉,任意新建一个文本文件,进行编辑:利用sql语句进行创建表,就创建一个简单的学生表吧。输入一下sql语句:
注意输入完成后保存文件,文件的后缀是.sql !!!!!
下一步是关键的时候,进行导入数据表。
按照上面的命令:show databses;---回车,即可看见当前的数据库名称。接下来创建数据库--这和我们在sqlserver中学的一样,
create databses mydatabse;
执行导入命令,将之前写好的创建数据表导入数据库中---
此次,完成了基本的任务,在这里只是创建了简单的一张表,可以根据你的需要自行创建数据表。
注:在执行source命令之前不许使用数据库,也就是说,你必须指定你要为哪个数据库导入表。
完成后,同样的方法,插入数据,也是在一个网文本文件中写好插入数据命令,然后执行导入命令.
以上步骤完成后,可以进行一个简单的连接数据库测试,检测是否能够连接上。
#include点击Run(运行)可以看见:#include "widget.h" #include #include #include bool creatconnect() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setPort(3306); db.setDatabaseName("student"); 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(!creatconnect()) { return 1; } Widget w; w.show(); return a.exec(); }
可以看见查询的数据。
至此,所有简单的编译测试工作已经完成了。小伙伴们,快去试试你们的Qt和mysql吧。