免安装版mysql配置及使用Qt编译驱动

免安装版mysql配置及使用Qt编译驱动,第1张

1. 下载Mysql免安装包

Mysql官网地址–> MySQL Community Server -->

下载Windows (x86,64bit)ZIP

2. 配置Mysql数据库 2.1 将文件复制到需要安装的目录

我这准备安装在D:\uninstall\mysql-8.0.29-winx64目录

2.2 配置my.ini文件

D:\uninstall\mysql-8.0.29-winx64\bin目录创建my.ini文件,内容如下:
注意:basedir=D:\uninstall\mysql-8.0.29-winx64这个目录是mysql文件的目录(此处需根据文件路径更改)

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=D:\uninstall\mysql-8.0.29-winx64
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
3. 初始化及启动mysql服务
  1. 以管理员的方式打开cmd命令窗口(直接打开cmd运行,可能会报错),并且进入到mysql安装目录的bin目录下。
cd D:\uninstall\mysql-8.0.29-winx64\bin
.\mysqld -install 
  1. 初始化
.\mysqld --initialize
  1. 启动mysql服务
net start mysql 
4. 测试是否能连接到mysql数据库

此处会让输入密码
Enter password: , 密码为初始化服务时自动生成,存在于"D:\uninstall\mysql-8.0.29-winx64\data\xxxx.err"文件中,打开文件查找password,可以看到初始密码为:-cmRwxffH1Pc

.\mysql -uroot -p

出现如下界面代码mysql安装成功:

注:
修改数据密码root:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
5. 使用Qt编译mysql的驱动
  1. 找到qt源代码目录下得mysql.pro,
  2. 使用Qt Creator打开,构建报错
  3. 修改qsqldriverbase/qsqldriverbase.pri

注释第4行的:include($$shadowed($$PWD)/qtsqldrivers-config.pri)
添加:include(./configure.pri)

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
  1. 修改mysql.pro文件
    (1) 注释:# QMAKE_USE += mysql
    (2) 添加如下内容:
LIBS += D:\uninstall\mysql-8.0.29-winx64\lib\libmysql.lib
INCLUDEPATH += D:\uninstall\mysql-8.0.29-winx64\include
DEPENDPATH += D:\uninstall\mysql-8.0.29-winx64\include
DESTDIR=../mysql/driver

修改后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

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


LIBS += D:\uninstall\mysql-8.0.29-winx64\lib\libmysql.lib
INCLUDEPATH += D:\uninstall\mysql-8.0.29-winx64\include
DEPENDPATH += D:\uninstall\mysql-8.0.29-winx64\include
DESTDIR=../mysql/driver
6.构建生成

生成的文件在mysql.pro同级目录的driver文件夹中

7.配置Qt开发环境

(1) 拷贝qsqlmysql.dll和qsqlmysqld.dll到D:\install\Qt.15.2\msvc2019_64\plugins\sqldrivers目录下
(2) 拷贝D:\uninstall\mysql-8.0.29-winx64\lib目录下的libmysql.dll,到D:\install\Qt.15.2\msvc2019_64\bin目录

8.使用Qt Demo测试是否成功配置mysql

需要先使用终端连接到mysql数据库:

use mysqll
create database test;
 show databases;

确定存在一个test的数据库即可

新建一个console的qt项目,需改.pro文件:
QT += core gui sql ,添加sql模块
main文件内容如下:

#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);
  // 输出可用数据库
  qDebug() << "Available drivers:";
  QStringList drivers = QSqlDatabase::drivers();
  foreach (QString driver, drivers)
    qDebug() << driver;
  // 打开MySQL
  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("localhost");
  db.setDatabaseName("test");
  db.setUserName("root");
  db.setPassword("root");
  if (!db.open())
    qDebug() << "Failed to connect to mysql";
  else
    qDebug() << "Success to connect to mysql";
  QSqlQuery query(db);

  //注意这里varchar一定要指定长度,不然会出错
  query.exec("create table Stu(id int primary key,name varchar(20))");
  query.exec("insert into Stu values(1,'student1')");
  query.exec("insert into Stu values(2,'student2')");
  query.exec("insert into Stu values(3,'student3')");
  query.exec("select id,name from Stu where id >= 2");
  while (query.next()) {
    int value0 = query.value(0).toInt();
    QString value1 = query.value(1).toString();
    qDebug() << value0 << value1;
  }
  return a.exec();
}

输出内容如下代表成功:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/791637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存