阿勒泰地区网站建设_网站建设公司_UX设计_seo优化
2026/1/5 22:04:37 网站建设 项目流程

自Qt5.7以后,Qt官方已经不再提供MySQL驱动,而是转向了MariaDB。但是,对于一些项目,可能还是需要使用MySQL,这时候就需要自己编译MySQL驱动了

当使用Cmake出现如下报错:QSqldatabase: No Such file and directory。这种情况其实是跟CmakeList里面里面添加SQL模块有关,需要在CmakeList里面添加SQL模块。

在Cmake中添加SQL模块

首先打开CmakeList.txt文件,添加如下代码:

1 find_package(Qt NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql)
2 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)

接下来在CmakeList.txt文件中添加如下代码:

注意${PROJECT_NAME}是您的项目名称,请将其替换为您的项目名称。

1 target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
2 target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Sql)

编译MySQL驱动

在完成上述步骤后,如果你没有MYSQL驱动的话,你在编译的时候会在应用程序输出那里看到:

1 QSqlDatabase: QMYSQL driver not loaded
2 QSqlDatabase: available drivers: xxxx

配置MySQL驱动

推荐使用 GitHub 上的预编译版本:

将编译好的qsqlmysql插件复制到Qt的插件目录下。

/path/to/Qt/plugins/sqldrivers/

在Qt项目中,使用QSqlDatabase类连接MySQL数据库。

 1 #include <QtSql/QSqlDatabase>
 2 #include <QtSql/QSqlError>
 3 
 4 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
 5 db.setHostName("localhost");
 6 db.setDatabaseName("your_database");
 7 db.setUserName("root");
 8 db.setPassword("your_password");
 9 
10 if (!db.open()) {
11     qDebug() << "Error: " << db.lastError().text();
12     return;
13 }

使用QSqlQueryModel和QSqlTableModel

QSqlQueryModel用于只读模式,QSqlTableModel用于可编辑模式。

1 #include <QtSql/QSqlQueryModel>
2 #include <QtSql/QSqlTableModel>
3 #include <QTableView>
4 
5 QSqlQueryModel *model = new QSqlQueryModel;
6 model->setQuery("SELECT * FROM your_table");
7 QTableView *view = new QTableView;
8 view->setModel(model);
9 view->show();

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询