QT配置MySQL数据库
我当前的软件版本:QT Creator 10.0.2 (community)
,MingW 6.4.3 (QT6)
,MySQL 8.0
。
MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL")
,这个时候是不支持MYSQL数据库的,所以需要进行配置。通常老版本的QT配置是通过修改QT提供的源文件mysql.pro
进行重新编译,可以参考QT - QT5.14.2 连接并操作MySQL8.0。对于新版本的QT并不存在mysql.pro
文件,只有CMakeLists.txt
文件,所以可以参考qt6.5.0MySQL驱动手动编译以及数据库连接详细教程以及注意事项附资源链接。按照这个教程进行执行到更改.cmake.conf
的时候,可以看见需要配置MYSQL的路径,这里就会很容易出现问题。按照源作者的代码:
SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "刚才复制的include文件夹路径/include")
SET(MySQL_LIBRARY "刚才复制的lib文件夹/lib/libmysql.lib")
有时我们在安装MYSQL就直接按照默认路径开始安装,所以MYSQL的路径在C:\Program Files\MySQL\MySQL Server 8.0
这个目录下,所以路径中又存在中文,又有空格存在,如果正常执行下去,那么在项目构建的时候就会出现ninja: build stopped: subcommand failed
,这个错误。找遍全网,没有明确解决方案,看见一个博主说是路径访问权限出现问题(没有C盘文件权限),所以考虑到QT编译的时候只需要include
和lib
文件夹下的文件,所以能不能直接拷贝出来,放到一个目录下进行编译。我们将MYSQL的include
和lib
文件夹拷贝到一个新文件夹中,现在的路径中没有空格也不再C盘。然后修改.cmake.conf
对应的值。进行重新编译,就不会再出现错误了。
然后将编译文件拷贝到对应的路径下面
然后开始验证:
新建一个QT项目,在项目中加上以下代码,(需要根据自己的情况进行配置密码等):
bool MainWindow::createConnection()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//添加一个默认连接,数据库驱动为QMYSQL
//设置主机名有两种方式
// db.setHostName("127.0.0.1");//设置主机名,从MySQL的Workbench中查看
db.setHostName("localhost");//设置主机名,从MySQL的Workbench中查看
db.setPort(3306);//设置端口
db.setDatabaseName("chat");//设置数据库名(这个数据库必须是已经存在的数据库)
db.setUserName("root");//设置用户名
db.setPassword("xiehou");//设置密码(你自己的密码)
if(!db.open())
{
QMessageBox::critical(0,"Cannot open database",
"Unable to establish a database connection.",QMessageBox::Cancel);//提示出错
qDebug()<<db.lastError().text();//输出错误信息
return false;
}
else
{
QMessageBox::information(0,"Successfully","Establish a database connection",QMessageBox::Ok);//提示成功
}
return true;
}
另外需要在pro配置文件加上QT += sql
和下方的MYSQL数据库配置信息(有空格也不要紧)才能引入SQL相关的头文件。
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"
然后再主程序进行执行改代码,成功之后就会显示成功的弹窗:
错误的话就会显示错误信息,根据错误信息在进行处理。