1.奔溃

如下代码:

#include "QtGuiApplication1.h"
#include "qsqldatabase.h"
#include "qsqlquery.h"
#include "qdebug.h"QtGuiApplication1::QtGuiApplication1(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");db.setHostName("127.0.0.1");db.setDatabaseName("postgis_24_sample");db.setPort(5432);db.setUserName("postgres");db.setPassword("admin");bool ok = db.open();int b = ok;QSqlQuery query;query.exec("Select * from \"Pipes\"");while (query.next()){QString id = query.value(1).toString();qDebug() << id;}
}

运行到第11行时会奔溃,排查了好久,原因如下:

使用的QPSQL数据库驱动和当前编写代码的Qt版本不一致造成的,如:当前用的Qt为Qt 5.14.1,但是第11行加载的数据库驱动qsqlpsql.dll是其它Qt版本的,如:是Qt 5.15.1.当版本不兼容时,有时会崩溃。比如:有时是从其它Qt版本拷贝过来的数据库驱动。数据库驱动一般在Qt安装目录下的  plugins\sqldrivers   目录下。比如我本机是:

C:\Qt_5_12_3\Qt5.12.3\5.12.3\msvc2017\plugins\qldrivers

2.连接失败

第17行即ok返回false,该原因一般是找不到数据库驱动导致,报错如下:

  driver not loaded

用以下代码输出数据库驱动程序为空:

qDebug() << QSqlDatabase::drivers() << "\r\n";

解决方法有两种:

1):新增系统变量QT_PLUGIN_PATH,根据每个人QT系统安装路径进行配置,比如我的系统C:\Qt_5_12_3\Qt5.12.3\5.12.3\msvc2017\plugins。然后重启开发环境,如:重启VS、QtCreator。

2):通过如下代码将数据库驱动程序所在的插件目录加入到库搜索目录中:

QCoreApplication::addLibraryPath(R"(C:\Qt_5_12_3\Qt5.12.3\5.12.3\msvc2017\plugins)");

根据每个人QT系统安装路径进行配置,比如我的系统是:

C:\Qt_5_12_3\Qt5.12.3\5.12.3\msvc2017\plugins

说明:一般都将插件目录(如:C:\Qt_5_12_3\Qt5.12.3\5.12.3\msvc2017\plugins)放到可执行文件同一目录下。

QSqlDatabase::addDatabase奔溃及连接失败解决相关推荐

  1. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  2. mysql报196271错误_微软补丁造成MYSQL及Windows经常连接失败解决方法

    [数据库闪断]微软补丁KB967723造成MySQL频繁无法连接的解决办法 微软补丁KB967723造成MySQL频繁无法连接,刷新即恢复正常的解决方法 (Can not connect to MyS ...

  3. ubuntu18.04,Linux使用远程连接工具连接失败解决

    ubuntu18.04使用远程连接工具连接失败解决 一.首先查询服务器ip ifconfig 无法使用 安装net-tools 工具 sudo apt install net-tools 出现coul ...

  4. ## 微信web开发者工具网络连接失败解决办法,基本百分百成功

    微信web开发者工具网络连接失败解决办法,基本百分百成功 下载抓包工具然后直接打开微信开发者工具即可解决网络连接失败问题 安装 Charles 然后启动一下就行了.此时再启动微信开发者工具就可以扫描二 ...

  5. 永劫无间为啥显示连接服务器失败,永劫无间服务器故障原因-永劫无间服务器连接失败解决方法_游戏369...

    永劫无间服务器故障是怎么回事?不少玩家在这次开服的时候都遇到了服务器故障的问题,不少玩家还不是很清楚遇到这样的问题应该怎么解决,下面一起来看一下永劫无间服务器连接失败解决方法. 永劫无间服务器故障解决 ...

  6. com.mysql.cj.jdbc.Driver连接失败解决办法

    com.mysql.cj.jdbc.Driver连接失败解决办法 com.mysql.cj.jdbc.Driver连接失败解决办法 (1)错误伊始 (2)怎么还是报错? (3)最终解决 com.mys ...

  7. 苹果12系统链接到服务器超时,iphone12连不上电脑怎么办 iphone12连接失败解决方法...

    iphone12连不上电脑怎么办?有些用户在将iphone12与电脑连接的时候,会有一些小问题出现,接下来中国香烟网小编就为大家带来iphone12连接失败解决方法,iphone12连接电脑的教程,感 ...

  8. dnf进游戏找不到服务器,登录DNF显示连接不到服务器怎么办 服务器连接失败解决方法...

    国服DNF在更新了春节活动以后,不少玩家都出现了登陆游戏老是显示连接失败的问题,那么登录DNF显示连接不到服务器怎么办?下面就让我们一起来了解一下服务器连接失败解决方法吧! DNF服务器连接失败解决方 ...

  9. 冒险岛与服务器中断连接,《冒险岛手游》怎么进不去 服务器连接失败解决方法...

    您可能感兴趣的话题: 冒险岛手游 核心提示:大家是不是很笔者一样都是守在闹钟旁边坐等冒险岛手游十点开测呢?哈哈,笔者我早已经"饥渴难耐"了. 冒险岛手游怎么进不去 服务器连接失败解 ...

最新文章

  1. mysql读写分离(MySQL Proxy 安装和使用)
  2. 新冠疫情下的AI顶会,ACL、ICLR、ICML等均改为线上会议!
  3. 如何查看oracle版本信息,如何查看oracle版本信息
  4. 如何修复 Flutter 中的“正在检查 Dart SDK 版本... << 此时出乎意料”错误?
  5. linux 的多进程运行机制,Linux 多进程-2
  6. ajax ssm 页面跳转_Shiro 教程,Ajax请求拦截跳转页面方案
  7. 【java设计模式】之 工厂(Factory)模式
  8. C 设计语言编译生成的是中间语言IL,一、源代码-面向CLR的编译器-托管模块-(元数据IL代码)...
  9. 《SQL高级应用和数据仓库基础(MySQL版)》作业 ·004
  10. leetcode算法题第一题(c++)
  11. 搜狐笔试 最大连续递增子段和 关键词连续递增
  12. python负数的表示方法_负整数的Python表示
  13. 安卓模拟器配置了摄像头还是显示黑白棋盘
  14. 行业了解——挂耳咖啡
  15. 域名系统安全作业-DNS Cache Poisoning Attack Reloaded: Revolutions with Side Channels
  16. QT之远程控制对方电脑
  17. MaxEnt软件的使用
  18. 游戏手柄计算机,电脑游戏手柄怎么设置 电脑游戏手柄设置步骤【图文】
  19. 给科研背景出身公司创始人的九条干货建议
  20. STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化

热门文章

  1. 非root账号安装nginx1.22.0
  2. @2021SC@SDUSC 源码分析: core/lib/encoding
  3. 微信平台——微信公众号简单介绍
  4. CSS - 响应式布局(一)媒体查询
  5. AI 算法在视频可分级编码中的应用
  6. 解决OpenOffice格式转换中文乱码终极解决方案
  7. 可能就蛮好了呢,哈哈哈哈
  8. 【官宣】传智教育使命升级!
  9. java super关键字的作用_详解Java编程中super关键字的用法
  10. 连锁超市数字化转型方案