Heim >Datenbank >MySQL-Tutorial >Qt编译mysql以及创建表后进行导入操作

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

WBOY
WBOYOriginal
2016-06-07 16:12:331637Durchsuche

鉴于许多同学对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 #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 <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吧。

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:redis学习笔记Nächster Artikel:Sybase还原过程中遇到的问题20141219