windows环境下Qt连接MySql

环境

windwos: v10
mysql: v5.7.29 x32
Qt creator: v4.11.0
Qt: v5.14.0 (MVSC 2017 x32)

安装mysql

这里使用mysql非安装版

//配置my.ini
mysqld --initialize //初始化data目录
mysqld install      //安装mysql服务
net start mysql     //开启mysql服务
//根据data目录下的.err文件中生成的随机密码登陆mysql
ALTER USER USER() IDENTIFIED BY root'; //修改密码
flush privileges;//刷新权限

安装qt

在安装时选择源码(source)

编译qt-mysql驱动

使用qt-creator打开

C:\Qt\Qt5.14.0\5.14.0\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro

编辑:

TARGET = qsqlmysql

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

#注释原有引用
#QMAKE_USE += mysql

#-----新增------
QT += sql
#mysql include 目录
INCLUDEPATH += C:\mysql-5.7.29-win32\include
#mysql 库文件
LIBS += -LC:\mysql-5.7.29-win32\lib -llibmysql
#-----------

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

构建

驱动文件会生成在:Qt所在盘符/plugins中

将驱动文件(.lib,.dll)粘贴到QT_HOME/plugins/sqldrivers中

引入mysql库文件(libmysql.dll,libmysql.lib)至QT_HOME/bin

测试连接

创建demo工程

编辑demo.pro

QT+=sql

加载驱动测试

编辑main.cpp
#include "mainwindow.h"
#include <QApplication>

#include "QtSql"

int main(){
    QApplication a(argc, argv);
    MainWindow w;
    #------新增------
    QStringList drivers = QSqlDatabase::drivers();

    foreach(QString driver,drivers){
        qDebug()<<driver;
    }
    #------新增------  
    w.show();
    return a.exec();
}
编译运行输出
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"

数据库连接测试

创建连接类DatabaseLinker

databaselinker.h

#ifndef DATABASELINKER_H
#define DATABASELINKER_H

#include "QtSql"

class DataBaseLinker
{
private:
    QSqlDatabase db;

public:
    DataBaseLinker();
};

#endif // DATABASELINKER_H

databaselinker.cpp

#include "databaselinker.h"

DataBaseLinker::DataBaseLinker()
{
    this->db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setUserName("root");
    db.setPassword("root");
    db.setDatabaseName("test");
    bool ok = db.open();
    if(ok){
        qDebug()<<"db linked successful";
        return ;
    }
    qDebug()<<"db link failed";
}

main.cpp

#include "QtSql"

#include "databaselinker.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    QStringList drivers = QSqlDatabase::drivers();

    foreach(QString driver,drivers){
        qDebug()<<driver;
    }

    DataBaseLinker *linker = new DataBaseLinker();

    w.show();
    return a.exec();
}

output

"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"
db linked successful
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值