实验环境:windows 10、Qt creator 5.12.1、MySQL 5.7
首先,我们在Qt中新建一个工程,在ui设计器中添加一个pushbutton
在工程的.pro文件中添加如下内容:
QT += sql //如果不添加,则无法在.cpp文件中添加相应头文件
右键pushbutton,点击go to slot转到槽并编写槽函数,具体槽函数如下:
//如果遇到错误提示,请先添加响应头文件
void MainWindow::on_pushButton_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("mydatabase"); //数据库名
db.setUserName("root"); //登陆身份
db.setPassword("123456"); //登陆密码
bool ok = db.open();
if (ok)
{
qDebug() << QString("数据库打开成功");
}
else
{
qDebug() << "数据库打开失败!";
}
}
之后编译运行程序,提示如下
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
这是因为Qt中mysql的插件未加载成功,一般有两种问题会引起此错误:
如果缺少了该文件,则可以选择下载Qt源码并重新编译;
第一种:在Qt的安装目录中没有MySQL的驱动
解决方案:进入Qt的安装目录的\plugins\sqldrivers文件夹下查看是否包含qsqlmysql.dll
例如:F:\Qt\Qt-5.12.1\5.12.1\mingw73_64\plugins\sqldrivers,发现其中有该文件
第二种:相关库支持不完善
解决方法:将MySQL\MySQL Server 5.7\lib下的libmysql.dll拷贝至\Qt-5.12.1\5.12.1\mingw73_64\bin下即可
但是需要注意的是,将文件复制到指定位置之后,需要重启qt-creator才能使的更改生效