C++与postgres连接

本文最后更新于 2024年9月18日 晚上

需要安装的库

jtv/libpqxx: The official C++ client API for PostgreSQL. (github.com)

libpqxx编译安装之前要求安装libpq

1
sudo apt install libpq-dev

接下来可以利用源代码编译出动态库或者静态库,一下操作默认当前目录为项目目录内。

静态库

1
2
3
./configure --prefix=/home/... #编译出的文件存放目录
make
sudo make install

动态库

1
2
3
4
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
sudo make install DESTDIR=/home/... #编译出的文件存放目录

使用Cmake构建程序示例。其中要注意的是C++一定要使用17以上的版本,否则编译会报错。

CMakeLists.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmake_minimum_required(VERSION 3.22)
project(template)

set(CMAKE_CXX_STANDARD 17)

set(PostgreSQL_ROOT /var/lib/postgresql/16)
include_directories (${PostgreSQL_INCLUDE_DIR} ${libpqxx_ROOT}/include)


set(libpqxx_ROOT /home/zhang/libpqxx)
link_directories(${PostgreSQL_LIBRARY_DIR} ${libpqxx_ROOT}/lib)

find_package(PostgreSQL REQUIRED)


add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} pqxx ${PostgreSQL_LIBRARIES})

main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include"pqxx/pqxx"
int main(){
std::cout << "hello world" << std::endl;
std::string conn_string = "hostaddr=127.0.0.1 port=5432 dbname=<database_name> user=<user_name> password=<password>";
pqxx::connection conn(conn_string);
pqxx::work txn(conn);
txn.exec("set search_path = \"<schema_name>\""); //进入schema
pqxx::result result = txn.exec("SELECT * FROM <table_name>");
txn.commit();
// Process results
for(auto row_it = result.begin(); row_it != result.end(); row_it++){
std::cout << "id: " << row_it[0].as<int>() << std::endl;
}
conn.close();
return 0;
}


C++与postgres连接
http://example.com/posts/26452/
作者
晓寒
发布于
2024年9月15日
许可协议