qt重新编译mysql驱动 ubuntu18.04和win10系统
ubuntu下mysql配置
执行命令
sudo apt-get install libmysqlclient-dev
下载完后查看是否存在MySQL的库文件
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/usr/include/mysql
win下下载mysql
mysql下载地址
下载后解压,将lib文件下的libmysql.dll复制到Qt5\5.14.2\mingw73_64\bin目录下面
qt源码编译mysql
使用qt打开mysql驱动的源码在
Qt5.11.1/5.11.1/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)
#这里添加的库文件是ubuntu下的win下可以自行添加
LIBS += /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 #库文件的地址
INCLUDEPATH += /usr/include/mysql
DEPENDPATH += /usr/include/mysql
DESTDIR = ../mysql/lib/
#编译完成后输出的路径
这个时候在编译会报错qtsqldrivers-config.pri文件找不到,修改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
至此编译成功可以在mysql/lib/ 目录下看到库文件,最后将库文件移动到
Qt5.11.1/5.11.1/gcc_64/plugins/sqldrivers
测试连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI", "QSQLITE");
db.setHostName("localhost"); //数据库主机名
db.setDatabaseName("scott"); //数据库名
db.setUserName("stott"); //数据库用户名
db.setPassword("tiger"); //数据库密码
db.setPort(111); //数据库的端口
db.open(); //打开数据库连接 调用 open() 方法打开数据库物理连接。在打开连接之前,连接不可用
db.close(); //释放数据库连接