Qt调用数据库

本文将针对Qt调用数据库的过程进行讲解。

前期准备

本文使用的数据库是MySQL。由于Qt提供了多个数据库的驱动,因此对于其他数据库,调用方法大同小异。

pro文件修改

在项目工程文件中加入下列语句使用数据库

1
QT       += sql

头文件

在需要使用数据库的代码中加入下面的头文件

1
2
#include <QtSql>
#include <QSqlDatabase>

数据库调用

创建数据库

创建数据库对象的代码如下:

1
2
3
4
5
6
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");   // 载入QMYSQL驱动支持MySQL
db.setHostName("127.0.0.1"); // 数据库服务器
db.setPort(3306); // 数据库端口
db.setDatabaseName("test"); // 数据库名称
db.setUserName("root"); // 用户名
db.setPassword("duan"); // 密码

判断数据库状态

1
2
3
4
5
if (!db.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}

加载驱动

当没有数据库的驱动时,运行程序会提示驱动未加载,并给出可以使用的驱动。这里还没有搞定,因此暂时放一下。(傻逼windows,艹,建议果断放弃转投linux,总之搞了半天没装上驱动。)

1
2
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

由于Qt不再提供MySQL的驱动支持,需要我们自己安装,安装方法包括自己编译与下载编译好的DLL(Windows真是麻烦)

手工编译

1 在Qt安装目录下找到Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers这个文件夹并进入

2 执行下列命令:

1
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 8.0/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 8.0/lib"

将命令中的MySQL Server 8.0/includeMySQL Server 8.0/lib更换为自己的MySQL安装路径。

3 运行make && make install

下载DLL

下载libmysqld.dlllibmysql.dll两个文件,放到qt的编译器目录下,我的是Qt\5.15.0\mingw81_64\bin

参考文献

0%