1、前言
我的QT版本为 qt-opensource-windows-x86-5.14.2。这是QT官方能提供的自带安装包的最近版本,更新的版本需要自己编译源代码,可点击此链接进行下载:Index of /archive/qt/5.14/5.14.2,选择下载 qt-opensource-windows-x86-5.14.2.exe 。另外,在安装QT的时候一定要安装源代码!一定要安装源代码!一定要安装源代码!不然到时候还要重新安装,只需要在安装的时候勾选上安装 Source 即可,如下所示:
我的MySQL版本为 mysql8.0.16,可通过mysql -V命令进行查看,如下所示:
该版本的MySQL是64位的!记住,这个很重要!一定要保证QT工程的位数和Mysql的位数一致!
2、准备工作
要在QT中操作MySQL数据库,需要在QT的工程文件.pro中添加如下命令:
加完之后别忘了保存,并重新编译一下工程。
在QT中可以打印一下当前QT版本支持的数据库:
#include <QSqlDatabase>
qDebug() << QSqlDatabase::drivers();
打印出的结果如下:
通过查看QT的安装目录,也可以发现在QT的安装目录中并没有MySQL的动态链接库,我的查看目录如下所示:
版本不同目录可能不一样,但基本上都是在mingwXX_XX\plugins\drivers目录下。需要注意的是,mingwXX_XX一定要和你的QT工程采用的编译器保持一致!
可见,当前QT版本并不支持MySQL。
所以我们需要通过重新编译的方式生成MySQL的动态链接库。
3、重新编译MySQL动态链接库
首先找到QT的源代码安装目录(这就是为什么一定要安装QT的Source,我当时找不到这个郁闷了半天),找到mysql.pro工程,我的具体目录如下所示:
然后在QT中打开mysql.pro,配置工程,选择编译器,和你的QT工程的编译器保持一致:
然后按照如下方式修改mysql.pro文件:
首先注释掉 QMAKE_USE += mysql ,然后分别添加INCLUDEPATH(在mysql安装目录下,换成自己的)和LIBS(在mysql安装目录下,换成自己的),和DESTDIR(这个是动态库的生成目录,直接按上面的写法写就行)。.pro文件修改完成之后保存,然后直接编译(点击QT左下角的锤子标志),直接编译即可,其他的不用管。此时,就可以下当前工程目录下找到新生成的mysql动态库文件,如下所示:
至此,mysql的动态链接库生成完毕。
4、配置QT
前面已经生成好mysql的动态链接库,接下来需要将生成的库拷贝到正确的目录下就可以了。
首先,将生成的三个库文件全部拷贝到QT的数据库引擎目录下(注意编译器的选择,和你的QT工程保持一致),如下所示:
然后将,MySQL安装目录下的mysql库文件,如下所示:
拷贝到QT的目录下,目录如下所示(注意编译器文件的选择):
此时,关于QT中MySQL的配置已经全部完成。通过上面的语句可以看到,当前的QT已经支持MYSQL了:
5、MySQL的简单操作
5.1、连接数据库
//链接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("pwd");
db.setDatabaseName("db_test");
if(!db.open()){
qDebug() << "未成功链接到数据库";
}else{
qDebug() << "成功链接到数据库";
}
5.2、插入数据
QSqlQuery query(db);
bool re = query.exec("INSERT INTO table_name (col1, col2, col3) VALUES (1, 1, 2)");
//bool re = query.exec("insert into table_name values(3, 1, 2)");
if(!re){
qDebug() << "操作数据库失败!" ;
}else{
qDebug() << "操作数据库成功!" ;
}
5.3、更新数据表
bool re = query.exec("update table_name set col2=2, period=1 where col1=1");
if(!re){
qDebug() << "操作数据库失败!" ;
}else{
qDebug() << "操作数据库成功!" ;
}
5.4、读取数据表
QSqlQuery db_cursor(db);
QString cmd = QString("select * from table_name");
db_cursor->exec(cmd);
if(db_cursor->size() == -1){
qDebug() << QString("数据表 <table_name> 操作异常,请检查... ");
return;
}else if(db_cursor->size() == 0){
qDebug() << QString("数据表 <table_name> 没有数据,请检查... ");
return;
}else{
while(db_cursor->next()){
int col0= db_cursor->value(0).toInt();
QString col1= db_cursor->value(1).toString();
}
}
附:Mysql8.0.16安装教程
1、去官网下载要安装的mysql版本
点击Archives,可以选择你想要下载的版本,这里我安装的是8.0.16版本。
下载完成后,解压之后的目录结构:
2、配置初始化的my.ini文件
在解压之后的目录结构中添加一个my.ini文件,在根目录下新建一个文本文档,将下面内容复制进去,保存后重命名为my.ini
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
#basedir=C:\Program Files\MySQL
basedir=D:\mysql\mysql8
# 设置mysql数据库的数据的存放目录
#datadir=C:\Program Files\MySQL\Data
datadir=D:\mysql\mysql8\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
注意:
mysql的安装目录和数据存放目录要改成你自己的目录。
数据存放目录的data文件夹,不要自己手动创建。
3、初始化MySQL
在安装的时候,为了避免出错,我们以管理员的身份去运行CMD(重要),避免出现安装失败的情况。
bin目录下执行下面的命令:
mysqld --initialize --console
注意: [MY-010454] [服务器]为root @ localhost生成临时密码:pIsuy2ZsFw)o。在没有更改密码前,需要记住这个密码,后续登录需要用到。复制密码先保存起来!!!
4、安装MySQL服务,并启动MySQL服务
(1)安装mysql服务
执行下面的命令:
mysqld --install [服务名] (服务名可以不加默认是mysql)
如果显示 service successfully installed 证明安装成功了。
服务安装成功之后执行下面命令启动mysql服务:
net start mysql
5、配置MySQL环境变量
【此电脑】右击属性——>【高级系统设置】——>进入系统属性窗口点击【环境变量】
D:\mysql\mysql8\bin
到此,环境变量配置完毕!
6、检查MySQL服务是否启动
有时候MySQL的服务不会自动启动,那么需要我们在连接数据库之前去手动启动MySQL的服务。
右键计算机——>管理——>服务和应用程序——>服务,在右侧栏目中找到名称为MySQL的服务。如果没有启动的话,这个时候它的状态应该是空,即未启动,启动此服务就OK了。
7、连接MySQL,并修改密码
使用Navicat去连接本地mysql。第一次连接密码时要使用默认密码(就是初始化mysql的时候我们复制的密码)。点击连接测试会显示连接成功。紧接着会弹出让你修改密码的弹框,重置密码即可。
走到这一步,恭喜你已经成功安装✨
8.命令行操作数据库常用命令
#启动mysql服务器
net start mysql
#初始管理员登录
mysql -u root -p
#先创建一个数据库
create database mydatabase;
#再创建一张表
create table student(
id integer unsigned primary key,
name varchar(16) not null,
birth date
)charset utf8;
#查询表格
select * from student;
#插入数据
insert into student values (1, "tom", "1999-9-9");
#创建一个用户,%指定所有电脑都可以登录
create user "test"@"%" identified by "test";
#授权操作
grant select, insert, create on *.* to "test"@"%";
#退出
exit
#用tset用户登录
mysql -u tset -p
#先创建一个数据库
create database mydatabase1;
#使用数据库
use mydatabase1;
#再创建一张表
create table student1(
id integer unsigned primary key,
name varchar(16) not null,
birth date
)charset utf8;
#插入数据
insert into student1 values (1, "tom", "1999-9-9");
insert into student1 values (2, "jack", "2000-1-1");
insert into student1 values (3, "aa", "2022-2-2");
#查询表格
select * from student1;
#退出
exit
#指定任何一台电脑都可以登录
vim /etc/mysql/mysql.conf.d/mysqld
#将 bind-address =127.0.0.1改为
bind-address =0.0.0.0
#重启mysql
service mysql restart
附:Navicat安装教程
一、下载
链接:https://pan.baidu.com/s/14t2MTbyB3A72H7NcNBLcjQ
提取码:e6o0
二、安装
1、解压和安装这两个文件
2、将简体中文64位的文件复制到Navicat12文件夹内
3、Navicat的简单操作
过期日期为1899、12、30即破解成功
(1)点击试用
(2)点击左上角链接MySQL,然后按设置链接名:并输入密码(就是初始化mysql的时候我们复制的密码)。确定
(3)右键root打开连接
如果密码输入错误,则会报1045错误
参考: