当前位置: 首页 > 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.xdnf.cn/news/1249021.html

相关文章:

  • 二叉树算法
  • Mysql常用语句
  • Bilateral Reference for High-Resolution Dichotomous Image Segmentation
  • 智慧社区(八)——社区人脸识别出入管理系统设计与实现
  • 轻量应用服务器Centos系统上安装jdk8和Jdk17教程(详细)
  • (ZipList入门笔记二)为何ZipList可以实现内存压缩,可以详细介绍一下吗
  • 在AI时代,如何制定有效的职业规划?AI时代职业规划+AI产品经理角色
  • 探索设计模式的宝库:Java-Design-Patterns
  • FastDeploy2.0:报qwen2.embed_tokens.weight
  • 3. 为什么 0.1 + 0.2 != 0.3
  • 多传感器融合
  • Redis之Set和SortedSet类型常用命令
  • leetcode-python-删除链表的倒数第 N 个结点
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-邮箱重置密码
  • 使用ProxySql实现MySQL的读写分离
  • ubuntu24安装vulkan-sdk
  • 一文搞定JavaServerPages基础,从0开始写一个登录与人数统计页面
  • Rust进阶-part4-智能指针2
  • 力扣106:从中序与后序遍历序列构造二叉树
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-登录实现
  • Redis里面什么是sdshdr,可以详细介绍一下吗?
  • Linux lvm逻辑卷管理
  • 跑yolov5的train.py时,ImportError: Failed to initialize: Bad git executable.
  • 【Linux】特效爆满的Vim的配置方法 and make/Makefile原理
  • 一种红外遥控RGB灯带控制器-最低价MCU
  • MySQL间隙锁在查询时锁定的范围
  • 前端遇到页面卡顿问题,如何排查和解决?
  • 【运维部署篇】OpenShift:企业级容器应用平台全面解析
  • Spring 的优势
  • Springboot集成Log4j2+MDC串联单次请求的日志