• QT连接mysql数据库方式


     

     

    QT连接mysql 对版本和系统的影响不大

    环境变量

    Mysql 有很多版本,在线下载版本,离线版本,免安装版本

    在线下载的版本可以自己选择需要的功能和插件,

    离线版本,直接一键安装就行

    免安装版本  需要环境变量,和通过命令集 启动mysql数据库的使用,

    都有优点

    我都是在先安装最新版本的

    2020/7/11号

    安装方面就不写了,QT方面选择全面安装

    Mysql方面选择全面 安装

    然后把Mysql文件种的

    这些版本按照  对应版本和32或64,的文件都添加到QT对应的文件中

    可以百度 有特别多,我看过大概200个左右内容都差不多

    至于 没有库文件,和需要自己编译的情况,还有报错的情况,可以忽略,有效果就行

    然后QT创建一个项目

     命令窗口和win窗口都可以的

     

    这块选择这两个版本

    代码

    QT       += core gui
    QT       +=sql
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    
    CONFIG += c++11
    
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    
    SOURCES += 
        main.cpp 
        mainwindow.cpp
    
    
    HEADERS += 
        mainwindow.h
    
    
    FORMS += 
        mainwindow.ui
    
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target

    #include "mainwindow.h"
    
    
    #include <QApplication>
    #include <QSqlDatabase>
    #include <QDebug>
    #include <QSqlQuery>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
    
    
    
    
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    
    
        db.setHostName("127.0.0.1"); //数据库服务器IP
            db.setUserName("root");//用户名
            db.setPassword("493893279");//密码
            db.setDatabaseName("Mydata");//使用的数据库
            qDebug()<<"DatabaseConnect";
           if(!db.open()){
            qDebug()<<"数据读取失败";
    
    
           }else
           {
            db.exec("SET NAMES'gbk'");
            
    
    
           }
    
    
    
    
    
    
    
    
    
    
        w.show();
        return a.exec();
    }

    内容就是这样

     

    点击运行没有报错就行

     效果如下

    关于在如何使用mysql读写数据和创建数据删除数据   

    修改 

    流程:
    1、安装Qt

    2、配置path环境变量

    3、编译mysql驱动(用Qt打开mysql.pro文件)

    第6行左右,在QMAKE_USE += mysql 前面加上# ,变为
    #QMAKE_USE += mysql

    win32:LIBS += -LD:/mysql/mysql-8.0.19-winx64/lib -llibmysql

    INCLUDEPATH += D:/mysql/mysql-8.0.19-winx64/include

    DEPENDPATH += D:/mysql/mysql-8.0.19-winx64/include

    (注意修改斜杠方向,复制下来的路径是向右的,编译需要向左的)

    4、拷贝文件

    生成的qsqlmysql.dll qsqlmysqld.dll 拷贝至Qt所对应mingw的sqldrivers中

    *在这里我只生成了qsqlmysql.dll 和 qsqlmysql.dll.debug,
    我都拷过去了,测试可以连接成功
    记得网上一种说法是一个用来debug一个用来release
    都是用来编译的,问题应该不大能编译就行

    拷贝mysql的动态库(博文中是提供下载,其实在mysql中有)
    将 mysql/lib 中的 libmysql.dll (动态库)拷贝至
    Qt所对应编译器的bin目录下


    5、测试连接
    新建一个Qt项目
    记得选择mingw_64的编译器,会在新建时提示你选。其他默认就好
    在.pro文件头部添加
    QT += core gui sql
    QT += sql

    修改main.cpp
    这里是main.cpp中的所有头文件,因为查阅的资料比较多,添加的也比较多,就不进行筛选了,大家直接拷贝吧
    #include "mainwindow.h"
    #include <QApplication>
    #include <QLabel>
    #include <QPushButton>
    #include <QHBoxLayout>
    #include <QSlider>
    #include <QSpinBox>
    #include <QSqlError>
    #include <QDebug>
    #include <QSqlDatabase>
    #include <QMessageBox>
    #include <QTextStream>
    #include <stdio.h>

    在预编译(#include)结束后,主函数开始前,定义一个连接函数:

    (注意横线部分是你自己的数据库的主机名,数据库名,用户名以及密码。
    如何使用mysql创建数据库,创建用户,查看密码主机名等,大家可以自己上网找操作代码,我也是用一次找一次...)


    bool createConnection()
    {
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("_____");
    db.setDatabaseName("_____");
    db.setUserName("_____");
    db.setPassword("_____");
    bool ok = db.open();
    if (ok)
    {
    qDebug() << "连接成功" ;
    }
    else
    {
    qDebug() << "连接失败" ;
    }
    }

    然后在主函数中调用连接函数,下面是主函数代码:
    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    if (!createConnection())
    return 1;
    return a.exec();
    }

    Ctrl + r 运行,成功后在下方的结果输出框中有小字提示“连接成功”。


    原理总结:划重点!!!!!!

    1、Qt中没有自带的mysql数据库插件 qsqlmysql.dl 与 qsqlmysql.dlld,需要到自带的mysql.pro中自行编译。
    2、需要把mysql动态库拷贝至Qt编译器的bin目录下


    推荐博文:
    操作流程:
    https://blog.csdn.net/dengjin20104042056/article/details/94129925

    原理介绍:
    https://www.cnblogs.com/lpxblog/p/6698255.html

    出现错误WSPStartup end: 0, protocol=6:
    https://www.cnblogs.com/judes/p/10505230.html

    上面的方法可以正常使用好像无法连接(虽然没有报错)

    在看别人后在改的

    主要原因是

    mysql  需要安装带界面的服务器端,还需要一个myslq的原就是资源包

    想这样属于配置文件

    然后按照上面的文档使用就可以了

    然后需要sql的相关命令配合使用  

    可以了

    https://www.bilibili.com/video/BV1Jk4y167tt

    看这个视频学的

  • 相关阅读:
    USBkiller 破解绿色版 by TK
    北京理工大学信息安全与对抗竞赛crackme02分析
    EnMp3Player 破解
    IDA相关下载
    猜数游戏 by TK QQ:86935367
    mp3播放器 by TK QQ:86935367
    UPX Easy GUI 汉化版by TK
    superdic cracked by TK
    vc 获取机器码
    (转)UITableView使用
  • 原文地址:https://www.cnblogs.com/suiyi78/p/13284570.html
Copyright © 2020-2023  润新知