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();
}

內容就是這樣

 

 

 

點擊運行沒有報錯就行

 

 

 效果如下

 

————————修改 

 

流程:
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

看這個視頻學的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM