首页 > 数据库 >C++ 连接pg数据库

C++ 连接pg数据库

时间:2024-04-22 09:11:44浏览次数:14  
标签:std txn postgres ss 数据库 pqxx C++ pg conn

环境:windows10 vs2022

引入pqxxs

一些增删改查的示例代码

#include "pqxx/pqxx"

void insertPg()
{
    try {
        // 建立连接
        pqxx::connection conn("dbname=postgres user=postgres password=123 hostaddr=127.0.0.1 port=5432");
        // 添加数据
        pqxx::work txn(conn);
        int id = 1;
        txn.exec("INSERT INTO abc (id) VALUES (" + std::to_string(id) + ")");
        txn.commit();
        // 关闭连接
        conn.disconnect();
        
    }
    catch (const std::exception &e) {
        ACOUT(e.what());
    }
}
void deletepg()
{
    try {
        // 建立连接
        pqxx::connection conn("dbname=postgres user=postgres password=123 hostaddr=127.0.0.1 port=5432");

        // 删除记录
        pqxx::work txn(conn);
        pqxx::result res = txn.exec("DELETE FROM abc WHERE id = 1");
        int num_deleted = res.affected_rows();
        txn.commit();

        std::stringstream ss;
        ss << "删除个数: " << num_deleted;
        std::string str = ss.str();
        AcOUT(str.c_str());

        // 关闭连接
        conn.disconnect();
    }
    catch (const std::exception &e) {
        AcOUT(e.what());
    }
}
void updatePg()
{
    try {
        // 建立连接
        pqxx::connection conn("dbname=postgres user=postgres password=123 hostaddr=127.0.0.1 port=5432");

        // 更新记录
        pqxx::work txn(conn);
        pqxx::result res = txn.exec("UPDATE abc SET id = '789654' WHERE id = 12 RETURNING *");
        txn.commit();

        // 输出更新的记录信息
        for (auto row : res) {
        std::stringstream ss;
        // ss << "id: " << row[0].as<int>() << ", name: " << row[1].as<std::string>();
        ss << "id: " << row[0].as<int>();
        std::string str = ss.str();
            AcOUT(str.c_str());
        }

        // 关闭连接
        conn.disconnect();
    }
    catch (const std::exception &e) {
        std::cerr << e.what() << std::endl;
    }
}

添加,删除,修改,返回操作的个数

int cPG(std::string SQL) {
    int num = 0;
    try {
		// 建立连接
		pqxx::connection conn("dbname=timespace user=postgres password=asdadsadasdri hostaddr=localhost port=5432");
		// 删除记录
		pqxx::work txn(conn);
		{
			pqxx::result result = txn.exec("SET CLIENT_ENCODING TO 'GBK';");
		}
		pqxx::result res = txn.exec(SQL);

		num = res.affected_rows();
		txn.commit();

		std::stringstream ss;
		ss << "操作数据条数: " << num;
		std::string str = ss.str();
		ACOUT(str.c_str());
		// 关闭连接
		conn.disconnect();
    	}
    	catch (const std::exception &e) {
    	  	ACOUT(e.what());
    	}
    	return num;
}

标签:std,txn,postgres,ss,数据库,pqxx,C++,pg,conn
From: https://www.cnblogs.com/SpringBreath/p/17952553

相关文章

  • 关于c++输入输出缓冲区,和IO加速流的一些理解
    首先,让我们来介绍一下这个函数ios::sync_with_stdio();这个函数在缺省状态下默认为true,即开启,这个函数的作用是同步c和c++的缓冲区这个操作是c++为了兼容c而做出的保守决定,即将c和c++的缓冲区合并为一个,但是这样会带来性能上的开销为什么呢?因为这个兼容缓冲区先执行c的输入输......
  • m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
    1.算法仿真效果VIVADO2019.2仿真结果如下:   系统RTL结构如下:   2.算法涉及理论知识概要       多通道FIR(FiniteImpulseResponse)滤波器是一种在数字信号处理中广泛应用的线性时不变滤波技术,尤其适用于多通道音频、视频、图像等多维数据的处理。   ......
  • 数据库原理第一次实验报告
    目录任务一:(数据库CAP)12345任务二:(数据库GlobalToyz)1234567891011121314151617181920写在最后数据库原理第一次实验报告任务一:(数据库CAP)1创建数据库CAP,包含4张表Customers、Products、Agents和Orders。UseMaster;CREATEDatabaseCAP;UseCAP;CREATETABLECUSTOMERS(......
  • C与C++的内存管理
    C中的malloc/relloc/calloc/free1.malloc与freemalloc函数用于分配指定大小的内存空间,并返回空间的首地址,若分配失败则返回NULL。free用来释放已分配的内存空间。intmain(){ int*ptr=(int*)malloc(sizeof(int)*10);//分配十个int型的空间 if(ptr==NULL){ pr......
  • C++U7-1-高精度加减
    学习目标    高精度加法        [高精度加法] #include<bits/stdc++.h>usingnamespacestd;intmain(){stringa;stringb;intc[10089]={0};intd[10089]={0};inte[10089]={0};cin>>a>>b;in......
  • 《Effective C++》读书笔记
    《EffectiveC++》读书笔记之前看过一遍,不过草草了事。近日看了《深度探索C++对象模型》,想起《EffectiveC++》中的内容已经有些忘记了,所以重新温习一下。这篇笔记只挑选书中的一些重要内容进行记录。条款07:为多态基类声明virtual析构函数这一个条款几乎是面试中的高频问题,只需......
  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(二)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。接下来的几篇将会讲解非静态数据成员的存取分析,讲解静态数据成员的情况请见上一篇:《深度解读《深度探索C++对象模型》之数据成员的存取......
  • C++ STL -- HashTable
    HashTable一般常用的unordered_set、unordered_map都是基于哈希表实现的,哈希表主要需要注意的是哈希冲突,迭代器等基础哈希映射使用哈希函数将键映射到索引的数据结构。即将原始数组索引通过哈希函数映射到一个哈希值上,从而将一个大范围索引,减小到一个小的固定范围哈希冲突......
  • Random 项目总结 -设置按钮 设置数据库地址, 用户密码写入XML
    privatevoidbutton1_Click(objectsender,EventArgse){stringxmlpath=System.AppDomain.CurrentDomain.BaseDirectory+"setting.xml";XmlDocumentxmldoc=newXmlDocument();xmldoc.Load(xmlpath);......
  • FreeLearning C/C++ 译文集翻译完成
    C++高级编程C++高级编程秘籍QtCreator应用开发C++游戏编程入门指南C++编程入门指南Boost.AsioC++网络编程BoostC++应用开发秘籍第二版C++数据结构与算法设计原理C++Qt5GUI编程C++高性能编程C++反应式编程C++系统编程秘籍C++研讨会C++现代嵌入式......