目录
Mysql下载安装
QT 下载安装
编译MYSQL
mingw构建方式
msvc构建方式
QT中MYSQL测试使用
因为版权问题,Qt本身不自带Mysql数据库的驱动,因此如果想要借用Qt操作Mysql数据库,需要手动进行编译。
Mysql下载安装
【Qt】 Mysql服务端安装教程
【Qt】 Mysql 库安装
1,可以选择安装服务端或者安装库文件
2,QT 构件32位版本对应安装 MYSQL 32位. 本文中QT 5.9.9 编译使用 MYSQL 安装5.7(x86)版本 或者 MySQL Connector/C (Archived Versions) 6.1.11(windows x86)
3,服务端x86版本可以从C:\Program Files (x86)\MySQL\MySQL Installer for Windows找到
MySQLInstaller.exe文件(上图)选择ADD按钮进行安装(默认好像是x64版本安装,安装完记得进入看一下版本),也可以从应用卸载打开此界面
QT 下载安装
【Qt】下载与安装_华开发的博客-CSDN博客_qt下载安装
安装组件时勾选 SOURCE 项
编译MYSQL
本机QT 安装目录:D:\QT\QT_5.9
MYSQL客户端 目录 :F:\oracle_client
QTCreator 打开QT源码 mysql.pro 目录:D:\QT\QT_5.9\5.9.9\Src\qtbase\src\plugins\sqldrivers\mysql
QT构建分为mingw 和 msvc 构建时mysql.pro修改不同,根据个人配置选择
QT编译MYSQL
mingw构建方式
参考msvc构建方式 替换成mingw构件
msvc构建方式
修改mysql.pro
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
#这个主要是添加.h依赖文件使用
INCLUDEPATH += "C:/Program Files (x86)/MySQL/MySQL Server 5.7/include"
#添加依赖的.lib文件
LIBS += "C:/Program Files (x86)/MySQL/MySQL Server 5.7/lib/libmysql.lib"
#生成DLL文件的存放目录 测试无效果
#DESTDIR = ../mysql/mysqlDll
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
点击重新构建项目
成功后在本机D:\plugins\sqldrivers下会获得
qsqlmysql.dll ,qsqlmysqld.dll
根据构建套件不同将文件放置不同位置
qsqlmysql.dll ,qsqlmysqld.dll放入
D:\QT\QT_5.9\5.9.9\msvc2015\plugins\sqldrivers
将C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib 内的libmysql.dll,libmysql.lib文件放入
D:\QT\5.9.9\5.9.9\msvc2015\bin
QT中MYSQL测试使用
pro文件中添加
QT += sql
使用头文件中添加
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDatabase>
显示可用驱动
//查看所有数据库驱动
QStringList lists = QSqlDatabase::drivers();
for(int i = 0 ;i < lists.size(); ++ i)
{
qDebug() << lists.at(i);
}
测试
#include <QCoreApplication>
#include <QStringList>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDatabase>
#include <QDateTime>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //连接本地主机
db.setPort(3307);
//db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("1234");
bool ok = db.open();
if (ok){
qDebug() <<"true_mysql:\n" ;
}
else {
qDebug() <<"error_mysql:\n" << db.lastError().text();
}
return a.exec();
}