寫在最前面的話:
自己想做一個英語單詞記錄軟體,可以在手機上和電腦上進行記錄和查看,所以自己決定利用騰訊云資料庫(云加校園活動很棒,不是打廣告哈),然后自己準備利用qt撰寫上位機軟體,首先自己是在騰訊云上購買了云資料庫,然后利用騰訊云的資料庫管理的軟體測驗新建了資料庫,然后準備用遠程控制云資料庫,首先測驗了Nvicat Premium連接騰訊云資料庫,發現可以用電腦上的軟體控制資料庫,然后準備用代碼控制,首先用的是的python連接騰訊云資料庫,發現可以控制,其實可以用python GUI來寫上位機,但是沒有找到python寫安卓軟體的庫,所以再采用qt寫上位機,
然后自己用qt后第一步也是準備找到mysql的庫,發現qt(5.13.2與5.14.1版本)竟然不帶mysql的驅動,最難的事就來了,如何裝上mysql的驅動?百度了各種檔案后發現需要mysql安裝包的各種檔案,然后再利用qt帶的原始碼自己編譯驅動,說干就干,去年12月的時候自己在學校(目前還是大學生)嘗試了一番,最后失敗了,放了寒假回到家沒有什么事又想接著嘗試一番,最終經過一個晚上和一個下午的嘗試最后成功用qt連接上了云資料庫,主要是先用Nvicat連接本地的mysql資料庫,成功連接后嘗試用qt連接,然后成功之后再連接云資料庫,
一、說明
電腦系統:win10
qt版本:5.13.2和5.14.1(測驗均成功)
mysql版本:MySQL-5.5
本篇教程分為三個部分:
- 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql資料庫(一、編譯連接前準備)
- 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql資料庫(二、編譯連接)
- 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql資料庫(三、問題整理)
本文參考鏈接(感謝各位大佬分享):
- 32位mysql安裝包_資料分析入門:如何下載安裝MySQL資料庫?
- Windows 環境下使用 Qt 連接 MySQL
- Qt連接MySql驅動加載失敗問題解決方法
- Qt-解決Qt與MySQL連接程序中出現“QSqlDatabase: QMYSQL driver not loaded”問題
- 「絕對獨家」Qt5.14.1 如何編譯和使用mysql和mariadb資料庫驅動
- qt5.12.3及以上高版本(qt5.13.0,qt5.13.1)如何連接操作mysql/mariadb資料庫
- Qt報錯“QSqlDatabase: QMYSQL driver not loaded“的解決方案
我寫過的兩篇文章(建議連接前先看看):
- Nvicat Premium連接騰訊云資料庫
- python連接騰訊云資料庫
二、軟體安裝
本文用的mysql5.5以及qt5.13.2、5.14.1兩個版本qt均測驗成功,需要注意的是qt和mysql兩個版本需要對應,如果mysql是32位的則需要qt也是32位,mysql64位需要qt也是64位,我百度發現我的qt是32位所以我下載的是32位的mysql,后續操作我發現其實只需要qt的MinGW和mysql對應即可,qt中的MinGW有64位和32位的,所以只要查看你的mysql是多少位的即可,我用的是32位的,
1.安裝qt
可以自行百度,安裝時建議安裝全部組件,并且安裝在C盤以外的其他盤
2.安裝mysql
安裝32位的可以借助下述文章,64位的需要自行百度,安裝也不需要安裝在c盤,最后配置完要知道自己root用戶的密碼,最好再新建一個資料庫然后建立一個測驗表進行測驗,參考文章:32位mysql安裝包_資料分析入門:如何下載安裝MySQL資料庫?
3.安裝Nvicat(推薦)
可以安裝Nvicat方便安裝mysql后測驗安裝是否成功,
三、連接代碼
先上代碼,大家可以測驗一下是不是可以成功連接,若是成功,則不需要后續編譯驅動的程序,
XXXX.pro檔案
QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
mainwindow.h檔案
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp檔案
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp檔案(注意這個需要改成自己資料庫的各種設定)
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QtDebug>
void connect_mysql()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //連接資料庫主機名,這里需要注意(若填的為”127.0.0.1“,出現不能連接,則改為localhost)
db.setPort(3306); //連接資料庫埠號,與設定一致
db.setDatabaseName("money"); //連接資料庫名,與設定一致
db.setUserName("root"); //資料庫用戶名,與設定一致
db.setPassword("123456"); //資料庫密碼,與設定一致
qDebug()<<"開始連接";
db.open();
if(!db.open())
{
qDebug()<<"不能連接"<<"connect to mysql error"<<db.lastError().text();
return ;
}
else
{
qDebug()<<"連接成功"<<"connect to mysql OK";
}
QSqlQuery query(db);
//這是自己的表的名字,下面操作是列印出test表name一列的所有資料
query.exec("select * from test");
while(query.next()){
qDebug()<<query.value("name").toString();
}
}
int main(int argc,char *argv[])
{
QCoreApplication a(argc,argv);
connect_mysql();
return a.exec();
}
mainwindow.ui檔案(無任何改動)
后續編譯部分見第二篇文章:【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql資料庫(二、編譯連接)
轉載參考分享此篇文章請注明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/257493.html
標籤:其他
