当前位置: 首页 > news >正文

libpq库使用

目录

  • 1 介绍
  • 2 基本使用

1 介绍

libpqPostgreSQL的官方C接口库。

2 基本使用

#include <libpq-fe.h>//将内容写入到数据库中
const char *conninfo = "host=10.129.21.35 port=5732 dbname=db_aaa user=ssff_user password=ppp";
PGconn *conn = PQconnectdb(conninfo);if (PQstatus(conn) != CONNECTION_OK) {COM_WRITELOG(common::COMLOG_FATAL, "connect to pgdb failed!");PQfinish(conn);return;
}// 开始事务(可选,但推荐批量插入时使用)
PGresult *res = PQexec(conn, "BEGIN");
if (PQresultStatus(res) != PGRES_COMMAND_OK) {COM_WRITELOG(common::COMLOG_FATAL, "BEGIN transaction failed: %s", PQerrorMessage(conn));PQclear(res);PQfinish(conn);return;
}
PQclear(res);// 遍历数据并插入
for (auto [ruleid1, log_cnt1] : map_ruleid_cnt) {std::string table_name1 = "XX";int data_cnt = map_tablename_cnt[table_name1];std::string fl_pipeline = "XX";std::string check_level = "XX";// 构造完整的 SQL 插入语句(注意字符串转义)std::string sql = "INSERT INTO guocheng_check_quality (""date, fl_planid, fl_plan_type, fl_taskid, fl_work_stage, ""fl_pipeline, fl_worker_name, check_taskid, check_task_type, ""check_ruleid, check_level, check_log_cnt, check_data_cnt) ""VALUES (""'" + date_str + "', "   // date"'" + plan_id + "', "    // fl_planid"'" + plan_type + "', "  // fl_plan_type"'" + ctask_id + "', "   // fl_taskid"'" + fl_work_stage + "', " // fl_work_stage"'" + fl_pipeline + "', "  // fl_pipeline(空字符串)"'" + worker_name + "', " // fl_worker_name"'" + std::to_string(check_taskid) + "', "  // check_taskid"'" + std::to_string(check_task_type) + "', " // check_task_type"'" + ruleid1 + "', " // check_ruleid"'" + check_level + "', "  // check_level"" + std::to_string(log_cnt1) + ", " // check_log_cnt"" + std::to_string(data_cnt) + ")"; // check_data_cnt// 执行 SQLres = PQexec(conn, sql.c_str());// 检查执行结果if (PQresultStatus(res) != PGRES_COMMAND_OK) {COM_WRITELOG(common::COMLOG_FATAL, "insert data failed! SQL: [%s], errmsg: [%s]", sql.c_str(), PQerrorMessage(conn));PQclear(res);PQexec(conn, "ROLLBACK"); // 回滚事务PQfinish(conn);return;}PQclear(res);
}// 提交事务
res = PQexec(conn, "COMMIT");
if (PQresultStatus(res) != PGRES_COMMAND_OK) {COM_WRITELOG(common::COMLOG_FATAL, "COMMIT failed: %s", PQerrorMessage(conn));PQclear(res);PQfinish(conn);return;
}
PQclear(res);// 关闭连接
PQfinish(conn);
http://www.dtcms.com/a/315450.html

相关文章:

  • PDF转图片工具技术文档(命令行版本)
  • 【taro react】 ---- useModel 数据双向绑定 hook 实现
  • vue和react的框架原理
  • 基于PD控制器的四旋翼无人机群飞行控制系统simulink建模与仿真
  • SpringBoot原理揭秘--BeanFactory和ApplicationContext
  • day 46 神经网络-简版
  • 2025年渗透测试面试题总结-01(题目+回答)
  • 什么是压接孔?压接孔PCB制造流程
  • Zabbix 企业级高级应用
  • AI赋能复合材料与智能增材制造:前沿技术研修重磅
  • 【MATLAB】(八)矩阵
  • 盟接之桥说制造:价格战与品质:制造企业可持续发展的战略思考
  • 智能融合:增材制造多物理场AI建模与工业应用实战
  • PHP:历经岁月仍熠熠生辉的服务器端脚本语言
  • Spring 的 ioc 控制反转
  • 无人设备遥控器之信号切换技术篇
  • Guava 与 Caffeine 本地缓存系统详解
  • jQuery DOM节点操作详解
  • stm32F407 硬件COM事件触发六步换相
  • AI医疗革命:十大应用场景如何重塑未来医疗
  • 手绘风格制图新选择:如何用Excalidraw+cpolar构建你的视觉化工作流?
  • windos10 安装CentOS7 虚拟机笔记
  • Datawhale AI夏令营 第三期 task2
  • 基于ZYNQ ARM+FPGA的声呐数据采集系统设计
  • 01数据结构-平衡二叉树
  • Prometheus监控学习-安装
  • 【Git】实现使用SSH方式连接远程仓库时的免密操作
  • 计算机网络:目的网络在路由表项中的作用
  • Python实战项目--学生成绩管理系统
  • 机器人slam个人笔记