Qt编译mysql以及创建表后进行导入操作

       鉴于许多同学对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 <QSqlDatabase>   #include <QDebug>

    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 <QApplication>
#include "widget.h"
#include <QMessageBox>
#include <QSqlError>
#include <QTextCodec>

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();
}
点击Run(运行)可以看见:

技术分享      技术分享

可以看见查询的数据。

       至此,所有简单的编译测试工作已经完成了。小伙伴们,快去试试你们的Qt和mysql吧。

      测试工程文件我已经上传了,大家可以下载源码。

http://download.csdn.net/detail/u013704336/8278693

        以上内容,纯属个人理解,若有任何问题,欢迎大家指出,共同学习。([email protected])

   


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。