在练习使用QT连接PostgresSQL时,运行出现

第一句:驱动无法加载。第二句:可用驱动列表

出现这类问题大部分是因为没有将dll文件添加到qt的插件中。

网上大部分解决方法是将这些libpq.dll、libeay32.dll、sseay32.dll添加到qt的插件文件夹中或者添加到对应项目的目录文件夹。这个方法能解决大部分的这类问题,但我使用后还是无法连接到PostgresSQL,于是在这个问题上尝试了很多方法,包括确认qt与PostgresSQL版本是否对应,主要是32位与64位的区别(这里的32位、64位不是电脑的位数,而是你创建的qt工程选择的位数与下载的PostgresSQL位数)。

于是我另辟蹊径,尝试使用VS连接PostgresSQL。

前提:下载好PostgresSQL与VS

我的版本是PostgresSQL10(X86)即32位、VS2015

VS项目创建与环境搭建

1.创建一个控制台项目(空项目)

956454954

2.进入项目属性

点击到项目栏,alt+enter进入项目属性或者右键项目进入属性

3.选择对应的平台配置,多种配置需要分别进行配置。

4.将PostgresSQL的include、lib文件夹添加进项目,libpq.lib文件添加进项目

完成项目配置。

打开PostgreSQL安装目录。
bin文件夹中的libeay32.dlllibiconv-2.dlllibintl-8.dlllibpq.dllssleay32.dll复制到项目目录。

部分PostgresSQL版本的.dll文件不一样,找不到的话可以先执行下面的测试程序,通过提示添加对应的dll文件

测试代码

选择项目平台配置

#include "stdafx.h"
#include <libpq-fe.h>int main()
{int lib_ver = PQlibVersion();printf("version of libpq: %d\n", lib_ver);//根据个人情况进行修改PGconn *conn = PQconnectdb("host=localhost dbname=postgres user=postgres password=123456"); if (PQstatus(conn) == CONNECTION_BAD){fprintf(stderr,"connection to database failed: %s\n",PQerrorMessage(conn));PQfinish(conn);return 0;}int ver = PQserverVersion(conn);printf("server version: %d\n", ver);PQfinish(conn);return 0;
}

根据警告提示添加缺少的dll文件,需要添加的文件:

运行结果

VS成功连接PostgresSQL,将以上的dll文件添加到项目工程目录或者qt安装目录下的sqldrivers文件夹中

QT连接PostgresSQL

QT创建一个窗口项目

在.pro文件中添加:QT +=sql

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <QSqlError>
#include <QSqlDatabase>int main(int argc, char *argv[])
{QApplication a(argc, argv);QSqlDatabase mDatabase = QSqlDatabase::addDatabase("QPSQL");mDatabase.setHostName("localhost");        //主机名mDatabase.setDatabaseName("postgres");     //数据库名mDatabase.setUserName("postgres");         //用户名mDatabase.setPassword("111111");           //密码mDatabase.setPort(5432);                   //端口号bool nRe = mDatabase.open();qDebug() << nRe;MainWindow w;w.show();return a.exec();
}

SQL查询测试

使用pgAdmin

/*************查询sql数据***************/if(mDatabase.isOpen()){QString strSql = QString("select \"user\" from usr");QVariantList record;QMap<int,QVariantList> results;try{QSqlQuery query(mDatabase);if(query.exec(strSql)){int fieldCount = query.record().count();int recordCount = 0;while(query.next()){for(int i = 0 ; i < fieldCount; i++){record << query.value(i);}results.insert(recordCount,record);recordCount++;record.clear();}query.clear();}else{QSqlError error = query.lastError();QString strText = error.text();qDebug() << strText;}}catch(...){qDebug() << "Datebase::ResultsBySql exception";}qDebug()<<results.size();}

QT连接PostgresSQL9.4(X86)相关推荐

  1. 详解Ubuntu10.10下Qt连接Mysql数据库

    转载自:http://mobile.51cto.com/symbian-273262.htm 详解Ubuntu10.10下Qt连接Mysql数据库是本文要介绍的内容,很详细的步骤,我们先来看内容. 第 ...

  2. qt 连接mysql数据库_QT连接MYSQL数据库教程

    QT连接MYSQL数据库教程 最近购买了阿里云Linux服务器,处于自学需要安装了MYSQL5.7. 准备用QT开发个小工具,在使用QT提供的标准类连接MYSQL库的时候一直爆出无法加载MYSQL驱动 ...

  3. Qt连接SQL Server 2014数据库

    Qt连接SQL Server 2014数据库 1. 建立目标数据库 连接数据库之前,需先在SQL Server中建立一个目标数据库,建立数据库和添加表的步骤这里不详述. 如建立一个名为DataBase ...

  4. qt mingw连接mysql_win下Qt连接MySql (mingw)

    /*************************************************************************************************** ...

  5. QT连接MySQL记录

    QT连接MySQL花费了不少时间,现在理一下头绪: 重点参考了http://www.linuxso.com/architecture/37897.html 这个帖子参考了http://www.sepp ...

  6. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)

    本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...

  7. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)

    一.说明 电脑系统:win10 qt版本:5.13.2和5.14.1(测试均成功) mysql版本:MySQL-5.5 本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动 ...

  8. QT——连接USB摄像头

    功能:使用QT连接USB摄像头,点击按钮显示画面 QT += multimedia QT += multimediawidgets #include "camera.h" #inc ...

  9. 嵌入式开发工具——嵌入式Qt连接mysql

    文章目录 前言 一.编译Qt中自带的mysql源码 二.程序测试 前言 上一篇(嵌入式开发工具--交叉编译libmysql)已经完成了mysql的C API交叉编译的工作,今天将用它来编译生成Qt连接 ...

最新文章

  1. Linux Centos 7 安装配置nginx
  2. python的shell无法输入_python中shell如何逐行输入?
  3. 求变量的数据类型,typeid,bool,C和C++的不同,new和delete,C++中的枚举,inline和可变参数模板,auto和函数模板,宽字符
  4. 计算机组成原理 华南理工,华南理工2017计算机组成原理随堂练习
  5. MOXy作为您的JAX-RS JSON提供程序–服务器端
  6. C#图片按指定大小分割
  7. 电子信息工程这个专业学的是什么内容,就业怎么样?
  8. 揭秘:快手用AI在短视频里玩出三大花样,背后是怎样的技术原理?
  9. 类型xxx 无法反序列化。缺乏对应的数据成员。
  10. [论离职]走的人不少,来的人更多
  11. Easy Excel生成压缩包文件,自定义表头样式
  12. MySQL 安装失败 Failed to find valid data directory
  13. 三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐
  14. simulink实现他励直流电动机减弱磁通调速仿真
  15. KATKO KEM640U开关
  16. 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载
  17. GO WEB IRIS入门 安装iris
  18. 海信电视可以刷鸿蒙系统吗,海信电视通用刷机教程
  19. RGB和RGBA之间的转换 (实用、赞)
  20. Lab01: Logisim简单数字电路模拟实验

热门文章

  1. 十进制负数转化为十六进制补码(数学层面)
  2. MathJax基本的使用方式
  3. php stomp rabbitmq,rabbitmq stomp 安装配置 -- kkito的博客
  4. nn.Sequential
  5. 【项目实战】Python基于GARCH模型进行预测特斯拉股票,以及评估金融资产的风险
  6. top2女硕士专业天坑,裸辞公职,现年薪从20w攀升到80w!
  7. Framework7特色的HTML框架WebApp开源前端框架
  8. iPhone iOS 设备如何 取消 信任此电脑
  9. C# Dictionary 取值
  10. 生命是一团欲望,欲望不满足便痛苦,满足便无聊。人生就在痛苦和无聊之间摇摆。—— 叔本华