開発環境:Ubuntu18.04+QT5.14.2+MySQL5.7.240
コンパイル手順:
1. mysql ソフトウェアとドライバーをインストールします。
ターミナル コマンドを開き、次のようにインストール ステートメントを実行します。
sudo apt-get install mysql-server
sudo apt-get install mysql-クライアント sudo apt-get install libmysqlclient-dev
sudo apt-get install libmysql++
2. インストールされたパスをクエリします。
ここでmysql.hは
3. QT インストール ディレクトリ内のプロジェクト ファイルのアクセス権限を設定する方法
sudo chmod -R 777 /opt/Qt5.14.2/5.14.2/Src/qtbase/src / plugins/sqldrivers
sudo chmod -R 777 /opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/mysql.pro
sudo chmod -R 777 /opt/Qt5.14.2/5.14.2/gcc_64
sudo chmod -R 777 /opt/Qt5.14.2/Tools/QtCreator
4. ターミナル コマンド ウィンドウで、「sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator」と入力し、Enter キーを押して、管理者権限で QtCreator ソフトウェアを開きます。
5. QtCreator ソフトウェアで、mysql project/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/mysql.pro プロジェクト ファイルを開きます。
6. mysql.pro ファイルの内容を
TARGET = qsqlmysql に変更します。
ヘッダー += $$PWD/qsql_mysql_p.h
ソース += $$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 = ./x86_64-linux-gnu/lib
7. qsqldriverbase.pri ファイルの内容を
QT = core core-private sql-private に変更します。
# 親プロジェクトの QMAKE_USE の場合。
# 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
8. mysql.pro プロジェクトをリリース モードでコンパイルして実行すると、/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql/Release/x86_64-linux- に生成されます。 gnu/lib ディレクトリ 対応するドライバー ファイル: libqsqlmysql.so、libqsqlmysql.so.debug。 2 つのドライバー ファイルを /opt/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers ディレクトリにコピーします。
9. 新しいテスト QT プロジェクトを作成した後、MYSQL データベース接続をテストします。テスト コードは次のとおりです。
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 查看数据库驱动名字
qDebug()<<QSqlDatabase::drivers();
// 加载驱动mysql数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
//本机数据库
db.setHostName("192.168.1.200");
db.setUserName("root");
db.setPassword("123456");
db.setDatabaseName("test");
db.setPort(3306);
if(!db.open())
{
qDebug()<< "服务器连接失败,请稍后重新尝试";
}
else
{
qDebug()<< "服务器连接成功,进行后续数据库增删改查操作";
}
// 关闭数据库
db.close();
return a.exec();
}