1.编译MySQL驱动
#安装Mysql开发工具
sudo apt-get install libmysqlclient-dev libqt5sql5-mysql
Qt安装路径为/home/lzy/Downloads/qt
进入源码路径/home/lzy/Downloads/qt/5.12.12/Src/qtbase/src/plugins/sqldrivers/mysql
修改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)
#新增三行
INCLUDEPATH+=/usr/include/mysql
LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient
#编译输出目录
DESTDIR = ./lib
进入上一级目录,修改qsqldriverbase.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
cd mysql
/home/lzy/Downloads/qt/5.12.12/gcc_64/bin/qmake
make
将libqsqlmysql.so
复制至/home/lzy/Downloads/qt/5.12.12/gcc_64/plugins/sqldrivers
2.数据库读写操作
头文件:
#ifndef SQL_MYWIDGET_H
#define SQL_MYWIDGET_H
#include <QWidget>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlQuery>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui {
class MyWidget; }
QT_END_NAMESPACE
class MyWidget : public QWidget {
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
~MyWidget() override;
private:
Ui::MyWidget *ui;
QSqlDatabase db;
private slots:
void processInsert();
void processQuery();
};
#endif //SQL_MYWIDGET_H
实现类:
#include "MyWidget.h"
#include "ui_MyWidget.h"
MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) {
ui->setupUi(this);
db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("test");
db.setHostName("127.0.0.1");
db.setPort(3307);
db.setUserName("root");
db.setPassword("123456");
if(db.open()){
QMessageBox::information(this,"提示","MySQL连接成功");
}else{
QMessageBox::information(this,"提示","MySQL连接失败");
}
connect(this->ui->insertButton,&QPushButton::clicked