• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

MySQL安装和QT连接MySQL数据库

武飞扬头像
关机睡觉
帮助5

一、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.查看数据库驱动

  1.  
    #include "mainwindow.h"
  2.  
     
  3.  
    #include <QApplication>
  4.  
    #include <QSqlDatabase>
  5.  
    #include <QDebug>
  6.  
    int main(int argc, char *argv[])
  7.  
    {
  8.  
    QApplication a(argc, argv);
  9.  
    MainWindow w;
  10.  
    //打印编译器的数据库驱动
  11.  
    qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
  12.  
    w.show();
  13.  
    return a.exec();
  14.  
    }
  15.  
     
  16.  
    输出结果:数据库驱动: ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
  17.  
    没有发现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。

  1.  
    TARGET = qsqlmysql
  2.  
     
  3.  
    HEADERS = $$PWD/qsql_mysql_p.h
  4.  
    SOURCES = $$PWD/qsql_mysql.cpp $$PWD/main.cpp
  5.  
     
  6.  
    # QMAKE_USE = mysql
  7.  
     
  8.  
    OTHER_FILES = mysql.json
  9.  
     
  10.  
    PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
  11.  
     
  12.  
     
  13.  
    include(../qsqldriverbase.pri)
  14.  
    LIBS = "F:\MySQL\MySQL Server 8.0\lib\libmysql.lib" //Mysql的路径
  15.  
    INCLUDEPATH = "F:/MySQL/MySQL Server 8.0/include"
  16.  
    DESTDIR = ..\mysql\mysqldll
学新通
学新通

修改qtsqldrivers-config.pri

  1.  
    QT = core core-private sql-private
  2.  
     
  3.  
    # For QMAKE_USE in the parent projects.
  4.  
    # include($$shadowed($$PWD)/qtsqldrivers-config.pri)
  5.  
    include(./configure.pri)
  6.  
     
  7.  
    PLUGIN_TYPE = sqldrivers
  8.  
    load(qt_plugin)
  9.  
     
  10.  
    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驱动已经添加成功了

学新通

代码连接验证:

  1.  
    #include "mainwindow.h"
  2.  
     
  3.  
    #include <QApplication>
  4.  
    #include <QDebug>
  5.  
    #include <QSqlDatabase>
  6.  
    #include <QMessageBox>
  7.  
    #include <QWidget>
  8.  
    #include <QSqlError>
  9.  
    #include <QSqlQuery>
  10.  
    int main(int argc, char *argv[])
  11.  
    {
  12.  
    QApplication a(argc, argv);
  13.  
    QWidget * w = new QWidget();
  14.  
    //打印编译器的数据库驱动
  15.  
    qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();
  16.  
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  17.  
    db.setHostName("localhost"); //连接本地主机
  18.  
    db.setPort(3306);
  19.  
    db.setDatabaseName("表名");
  20.  
    db.setUserName("root");
  21.  
    db.setPassword("你的密码");
  22.  
    bool ok = db.open();
  23.  
    if (ok){
  24.  
    // QMessageBox::information(w, "infor", "link success");
  25.  
    // QString str = "insert into tbl values(12,'行了');"; //插入语句
  26.  
    QSqlQuery query;
  27.  
    if(!query.exec(str)){
  28.  
    QMessageBox::information(w, "infor", "query failed");
  29.  
    }else{
  30.  
    QMessageBox::information(w, "infor", "query success");
  31.  
    }
  32.  
    query.exec("select * from 表名");
  33.  
    while(query.next()){
  34.  
    qDebug()<<query.value(0).toInt()
  35.  
    <<query.value("字段").toString().toUtf8().data();
  36.  
    }
  37.  
    }
  38.  
    else {
  39.  
    QMessageBox::information(w, "infor", "link failed");
  40.  
    qDebug()<<"error open database because"<<db.lastError().text();
  41.  
    }
  42.  
    return a.exec();
  43.  
    }
学新通
学新通

连接完成!!!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhehbj
系列文章
更多 icon
同类精品
更多 icon
继续加载