1、使用qt连接mysql数据库,代码如下:
在pro中增加一行
qt +=sql
cpp文件中加入头文件
#include <QStringList>
#include <QMessageBox>
#include <QSqlError>
连接数据库如下代码
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("你的数据库");
db.setUserName("root");
db.setPassword("root");
bool ok = db.open();
if (ok)
{
QMessageBox::information(this, "infor", "success");
}
else
{
QMessageBox::information(this, "infor", "open failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
提示:
QSqlDatabase: MYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
failed to connect to mysql "Driver not loaded Driver not loaded"
解决方法:没有libqsqlmysql.so库文件
libqsqlmysql.so库文件生成步骤:
1、修改Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql目录下的mysql.pro,注意:Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql路径是你本机的QT安装路径。在文件最后增加
INCLUDEPATH +=/usr/include/mysql #这个目录是mysql的头文件目录
LIBS += -L/lib64/mysql/ -lmysqlclient #这个库文件是libmysqlclient.so库文件,如果这个lib配置不对,将无法正常生成libqsqlmysql.so
如果不知道lmysqlclient文件路径可以用如下命令查找
find / -name libmysqlclient.so
2 在Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql目录下执行qmake mysql.pro
如果提示 qmake not find command说明qmake没有安装或者qmake没有加入到环境变量,此时,先看看qmake是否安装,执行:
find / -name qmake,如果查到,就有绝对路径执行qmake mysql.pro
一般在Qt/5.15.2/gcc_64/bin这个路径下面
PS:一定要用qmake生成makefile否则会提示和的错误,比如缺少文件错误
3 makefile生成后 执行make 正常情况下会生成libqsqlmysql.so文件,如果提示undefine等很多错误就是LIBS += -L/lib64/mysql/ -lmysqlclient 没有设置正确。
4 libqsqlmysql.so文件生成在Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers
将复制到/Qt/5.15.2/gcc_64/plugins/sqldrivers即可
5再次执行程序,发现可以正常连接mysql了。