QT连接PostgresSQL9.4(X86)
在练习使用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.dll
、libiconv-2.dll
、libintl-8.dll
、libpq.dll
、ssleay32.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)相关推荐
- 详解Ubuntu10.10下Qt连接Mysql数据库
转载自:http://mobile.51cto.com/symbian-273262.htm 详解Ubuntu10.10下Qt连接Mysql数据库是本文要介绍的内容,很详细的步骤,我们先来看内容. 第 ...
- qt 连接mysql数据库_QT连接MYSQL数据库教程
QT连接MYSQL数据库教程 最近购买了阿里云Linux服务器,处于自学需要安装了MYSQL5.7. 准备用QT开发个小工具,在使用QT提供的标准类连接MYSQL库的时候一直爆出无法加载MYSQL驱动 ...
- Qt连接SQL Server 2014数据库
Qt连接SQL Server 2014数据库 1. 建立目标数据库 连接数据库之前,需先在SQL Server中建立一个目标数据库,建立数据库和添加表的步骤这里不详述. 如建立一个名为DataBase ...
- qt mingw连接mysql_win下Qt连接MySql (mingw)
/*************************************************************************************************** ...
- QT连接MySQL记录
QT连接MySQL花费了不少时间,现在理一下头绪: 重点参考了http://www.linuxso.com/architecture/37897.html 这个帖子参考了http://www.sepp ...
- 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)
本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...
- 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)
一.说明 电脑系统:win10 qt版本:5.13.2和5.14.1(测试均成功) mysql版本:MySQL-5.5 本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动 ...
- QT——连接USB摄像头
功能:使用QT连接USB摄像头,点击按钮显示画面 QT += multimedia QT += multimediawidgets #include "camera.h" #inc ...
- 嵌入式开发工具——嵌入式Qt连接mysql
文章目录 前言 一.编译Qt中自带的mysql源码 二.程序测试 前言 上一篇(嵌入式开发工具--交叉编译libmysql)已经完成了mysql的C API交叉编译的工作,今天将用它来编译生成Qt连接 ...
最新文章
- Linux Centos 7 安装配置nginx
- python的shell无法输入_python中shell如何逐行输入?
- 求变量的数据类型,typeid,bool,C和C++的不同,new和delete,C++中的枚举,inline和可变参数模板,auto和函数模板,宽字符
- 计算机组成原理 华南理工,华南理工2017计算机组成原理随堂练习
- MOXy作为您的JAX-RS JSON提供程序–服务器端
- C#图片按指定大小分割
- 电子信息工程这个专业学的是什么内容,就业怎么样?
- 揭秘:快手用AI在短视频里玩出三大花样,背后是怎样的技术原理?
- 类型xxx 无法反序列化。缺乏对应的数据成员。
- [论离职]走的人不少,来的人更多
- Easy Excel生成压缩包文件,自定义表头样式
- MySQL 安装失败 Failed to find valid data directory
- 三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐
- simulink实现他励直流电动机减弱磁通调速仿真
- KATKO KEM640U开关
- 手机酷狗2 java_酷狗叮咚(原手机酷狗) 2.70 For Java 中文官方安装版下载
- GO WEB IRIS入门 安装iris
- 海信电视可以刷鸿蒙系统吗,海信电视通用刷机教程
- RGB和RGBA之间的转换 (实用、赞)
- Lab01: Logisim简单数字电路模拟实验
热门文章
- 十进制负数转化为十六进制补码(数学层面)
- MathJax基本的使用方式
- php stomp rabbitmq,rabbitmq stomp 安装配置 -- kkito的博客
- nn.Sequential
- 【项目实战】Python基于GARCH模型进行预测特斯拉股票,以及评估金融资产的风险
- top2女硕士专业天坑,裸辞公职,现年薪从20w攀升到80w!
- Framework7特色的HTML框架WebApp开源前端框架
- iPhone iOS 设备如何 取消 信任此电脑
- C# Dictionary 取值
- 生命是一团欲望,欲望不满足便痛苦,满足便无聊。人生就在痛苦和无聊之间摇摆。—— 叔本华