C++与postgres连接
本文最后更新于 2024年9月18日 晚上
需要安装的库
jtv/libpqxx: The official C++ client API for PostgreSQL. (github.com)
libpqxx编译安装之前要求安装libpq
1 |
|
接下来可以利用源代码编译出动态库或者静态库,一下操作默认当前目录为项目目录内。
静态库
1 |
|
动态库
1 |
|
使用Cmake构建程序示例。其中要注意的是C++一定要使用17以上的版本,否则编译会报错。
CMakeLists.txt 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17cmake_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;
}