MySQL安装和QT连接MySQL数据库

一、MySQL介绍

MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

二、MySQL和SQLite有什么区别

SQLite是一款轻量级的关系数据库管理系统,也是开源免费的,用户可以直接读取和写入数据库的文件,非常适合不需要多个用户的小型项目。

MySQL和SQLite虽然都属于关系型数据库管理系统,但它们还是存在较大差异的。MySQL需要服务器才能运行,适合多个用户使用,管理员可以为每个用户分配特定权限,并且多个用户可以同时写入不同的文件,能轻松扩展以满足用户的需求。

而SQLite不需要实际的服务器来运行,应用程序无需与服务器通信到客户端/服务器架构,而是集成到SQLite中。SQLite不能很好地支持多个用户,如果有两个用户同时尝试写入,那么数据库将会被短暂锁定,功能受限。另外,SQLite不能处理一次大量数据,一旦超过最大容量,其性能将会降低。

总的来说,SQLite是为只有一个用户的小型项目设计的轻量级解决方案,而MySQL适用于各种规模的项目并支持多个用户。

三、MySQL下载

官方下载:https://dev.mysql.com/downloads/mysql/

四、安装

选择Developer Default(开发人员默认值)一直点击next,最后设置数据库密码就行。

将MySQL的bin添加到环境变量中,使用Developer Default安装,会默认安装在C盘。一般是这个目录:C:\Program Files\MySQL\MySQL Server 8.0\bin;

在终端中输入:mysql -u root -p 回车 然后输入你的之前设置的密码。

出现mysql> 说明安装成功!

五、QT连接MySQL数据库

1.首先建立一个qt程序,点击.pro文件,添加sql,添加完成编译一下,加载sql的头文件。

2.查看数据库驱动

#include "mainwindow.h"

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //打印编译器的数据库驱动
    qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
    w.show();
    return a.exec();
}

输出结果:数据库驱动: ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
没有发现mysql数据库驱动

3.添加mysql数据库驱动,我们需要两个文件:libmysql.lib和qsqlmysql.dll文件

libmysql.lib:在安装的mysql目录文件的lib目录下;

将该文件拷贝到F:\Program\QT\5.14.2\mingw73_64\bin目录下。

qsqlmysql.dll:需要我们进行编译:

(1)打开QT的安装目录的这个路径:QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql

(2)在该目录下新建一个mysqldll的文件夹,然后打开mysql.pro。

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

# QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin


include(../qsqldriverbase.pri)
LIBS += "F:\MySQL\MySQL Server 8.0\lib\libmysql.lib" //Mysql的路径
INCLUDEPATH += "F:/MySQL/MySQL Server 8.0/include"
DESTDIR = ..\mysql\mysqldll

修改qtsqldrivers-config.pri

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

编译:

在mysqldll文件下生成三个文件,将qsqlmysql.dll和qsqlmysql.dll.debug拷贝到刚刚编译时使用的编译器路径中。

比如刚才我使用的是mingw73_64位的编译器,使用我就拷贝到F:\Program\QT\5.14.2\mingw73_64\plugins\sqldrivers目录下

验证:

重新执行test1程序,看到mysql驱动已经添加成功了

代码连接验证:

#include "mainwindow.h"

#include <QApplication>
#include <QDebug>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QWidget>
#include <QSqlError>
#include <QSqlQuery>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget * w = new QWidget();
    //打印编译器的数据库驱动
    qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");  //连接本地主机
    db.setPort(3306);
    db.setDatabaseName("表名");
    db.setUserName("root");
    db.setPassword("你的密码");
    bool ok = db.open();
    if (ok){
        // QMessageBox::information(w, "infor", "link success");
        // QString str = "insert into tbl values(12,'行了');";  //插入语句
        QSqlQuery query;
        if(!query.exec(str)){
            QMessageBox::information(w, "infor", "query failed");
        }else{
            QMessageBox::information(w, "infor", "query success");
        }
        query.exec("select * from 表名");
        while(query.next()){
            qDebug()<<query.value(0).toInt()
                 <<query.value("字段").toString().toUtf8().data();
        }
    }
    else {
        QMessageBox::information(w, "infor", "link failed");
        qDebug()<<"error open database because"<<db.lastError().text();
    }
    return a.exec();
}

连接完成!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值