1、操作系统:win11
2、qt版本:6.5.2
3、PostgreSql版本:14.9
1、下载地址:https://github.com/qt/qtbase/tree/6.5.2
将下载的源码文件解压指定的的目录,找到src/plugins/sqldrivers根据自己的实际情况放置,本次我使用的目录如下:

三、编译驱动
1、编译文件配置
进入sqldrivers目录
(1)配置.make.conf文件
- set(QT_REPO_MODULE_VERSION "6.5.2")
-
- # 开启pg插件
- SET(FEATURE_sql_psql ON)
- #pg驱动头文件
- SET(PostgreSQL_INCLUDE_DIR "E:/software/QT/src/pgsql14.9/include")
- #pg动态库引导文件
- SET(PostgreSQL_LIBRARY "E:/software/QT/src/pgsql14.9/lib/libpq.lib")
-
- #mysql驱动编译配置
- #SET(FEATURE_sql_mysql ON)
- #SET(MySQL_INCLUDE_DIR "E:/software/QT/src/mysql8.0/include")
- #SET(MySQL_LIBRARY "E:/software/QT/src/mysql8.0/lib/libmysql.lib")
(2)配置CmakeLists.txt
- cmake_minimum_required(VERSION 3.16)
- if (NOT CMAKE_PROJECT_NAME STREQUAL "QtBase" AND NOT CMAKE_PROJECT_NAME STREQUAL "Qt")
- include(.cmake.conf)
- project(QSQLiteDriverPlugins
- VERSION "${QT_REPO_MODULE_VERSION}"
- DESCRIPTION "Qt6 SQL driver plugins"
- HOMEPAGE_URL "https://qt.io/"
- LANGUAGES CXX C ASM
- )
- find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS
- BuildInternals
- Core
- Sql
- )
- qt_prepare_standalone_project()
- else()
- qt_internal_upgrade_cmake_policies()
- endif()
-
- qt_feature_module_begin(
- NO_MODULE
- PUBLIC_FILE "qtsqldrivers-config.h"
- PRIVATE_FILE "qtsqldrivers-config_p.h"
- )
-
- include(configure.cmake)
- add_subdirectory(psql)
2、QtCretor打开CmakeLists.txt


3、驱动编译
选择项目右键选择构建,编译成功输入输出日志如下

4、Qt的mingw配置驱动文件
将编译好的qsqlpsql.dll文件拷贝至qt的运行目录(我本机目录E:\software\QT\6.5.2\mingw_64\bin),仅仅拷贝这医个文件远远不够,还需要将postgresql运行目录下的几个文件拷贝到qt运行目录
- libcrypto-1_1-x64.dll
- libiconv-2.dll
- libintl-9.dll
- libpq.dll
- libssl-1_1-x64.dll

- void intiDb()
- {
- QStringList drivers = QSqlDatabase::drivers();
- qDebug() << drivers;
- QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
- db.setHostName("server200");
- db.setDatabaseName("qt_db");
- db.setUserName("postgres");
- db.setPassword("123456");
- bool isOk = db.open();
- qDebug() << (isOk?"连接postgresql成功":"连接postgresql失败") <<
- (isOk?"":db.lastError().text()) ;
-
- QSqlQuery sqlQuery;
- sqlQuery.exec("SELECT id,name,age FROM t_test");
- while(sqlQuery.next())
- {
- qDebug() << sqlQuery.value("id").toInt() << " " <<
- sqlQuery.value("name").toString() << "" << sqlQuery.value("age").toInt() ;
- }
至此大功告成