QT编译MySQL驱动和操纵MySQL
一、编译MySQL驱动
1.软件版本
QT:5.12.12
MySQL:8.0.17
2.用Ot Creator打开Qt安装目录下
D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro的MySQL源码,如果安装目录下没有这个文件夹,就重装Qt,安装时记得勾选安装源码。
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#第一步,注释掉qmake
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
#第二步,添加.h依赖文件,找到自己安装的mysql对应路径
INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
DEPENDPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
#第三步,添加依赖的.lib文件
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
#第四步生成你所需要的dll存放目录
DESTDIR = ../mysql/mylib
3.编译生成需要的文件,在工程同级目录下的mylib文件夹中。
4.将编译生成的文件放到对应目录,选择自己对应的编译器版本。
5. 在mysql安装路径找到mysql的libmysql.dll和libmysql.lib拷贝到相应的编译套件的bin目录下
二、测试增删改查操作
1.在项目.pro文件中添加
QT += sql
2.引入数据库相应头文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
#include<QDebug>
#include<QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//输出可用数据库
// qDebug()<<"available drivers:";
// QStringList drivers = QSqlDatabase::drivers();
// foreach(QString driver, drivers)
// qDebug()<<driver;
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); //括号内要写出数据库的类型
//设置数据库
db.setHostName("127.0.0.1"); //设置数据库的主机ip
//设置数据库的用户名
db.setUserName("root");
//设置数据库的密码
db.setPassword("root"); //这个就是安装MySQL时设置的密码
//设置数据库的名字
db.setDatabaseName("db1");
//打开数据库(已经安装过mysql驱动了)
if(db.open()==false){
QMessageBox::warning(this,"waring",db.lastError().text());
}else{
qDebug()<<"数据库打开成功";
}
//插入数据
QString sql = "insert into stu (id,name,age,score) values (1,'kaw',20,97)"; //书写想要执行的语句
QSqlQuery query; //创建一个QSqlQuery对象
query.exec(sql); //执行mysql语句
//修改数据
QString sqlUpd = "update stu set age=22 where id=1"; //书写想要执行的语句
QSqlQuery queryUpd; //创建一个QSqlQuery对象
queryUpd.exec(sqlUpd); //执行mysql语句
//删除数据
// QString sqlDel = "delete from stu where id=1"; //书写想要执行的语句
// QSqlQuery queryDel; //创建一个QSqlQuery对象
// queryDel.exec(sqlDel); //执行mysql语句
//查询操作
QString sqlSel="select * from stu";
QSqlQuery querySel;
querySel.exec(sqlSel);
while(querySel.next()){
qDebug()<<querySel.value(0).toInt()
<<querySel.value("name").toString().toUtf8().data()
<<querySel.value(2).toInt()
<<querySel.value(3).toInt();
}
qDebug()<<"Qt version:" << qVersion();
}