QT SQLITE 多个数据库查询 qt连接多个数据库_#include

 

 

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_02

 

 

QT SQLITE 多个数据库查询 qt连接多个数据库_QT SQLITE 多个数据库查询_03

 

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

 

环境变量

QT SQLITE 多个数据库查询 qt连接多个数据库_sql_04

 

 

 

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

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

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

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

都有优点

 

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

2020/7/11号

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

Mysql方面选择全面 安装

然后把Mysql文件种的

QT SQLITE 多个数据库查询 qt连接多个数据库_#include_05

 

 

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

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

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

 

然后QT创建一个项目

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_06

 

QT SQLITE 多个数据库查询 qt连接多个数据库_QT SQLITE 多个数据库查询_07

 

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

 

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_08

 

 

这块选择这两个版本

代码

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_09

 

 

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

 

QT SQLITE 多个数据库查询 qt连接多个数据库_#include_10

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

内容就是这样

 

 

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_11

QT SQLITE 多个数据库查询 qt连接多个数据库_mysql_11

 

点击运行没有报错就行

QT SQLITE 多个数据库查询 qt连接多个数据库_QT SQLITE 多个数据库查询_13

 

 

 效果如下

 

————————修改 

 

流程:
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目录下

推荐博文:
操作流程:

原理介绍:

出现错误WSPStartup end: 0, protocol=6:

 

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

 

 

在看别人后在改的

 

主要原因是

 

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

QT SQLITE 多个数据库查询 qt连接多个数据库_QT SQLITE 多个数据库查询_14

 

想这样属于配置文件

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

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

 

 

QT SQLITE 多个数据库查询 qt连接多个数据库_#include_15

 

 

QT SQLITE 多个数据库查询 qt连接多个数据库_QT SQLITE 多个数据库查询_16

 

可以了