본문 바로가기

settings/macOS

libpqxx를 사용해 Postgresql과 C++연동하기

다른 linux 기반 사용자 분들도 libpqxx 설치방법과 directory path를 제외하고는 동일하게 하시면 됩니다.

 

저는 맥 유저기 때문에 homebrew로 libpqxx를 설치했습니다.

brew install libpqxx

 

main.cpp와 Makefile을 만들고 아래의 코드를 복붙합니다.

// main.cpp
#include <iostream>
#include <pqxx/pqxx>

int main()
{
    try
    {
        pqxx::connection C;
        std::cout << "Connected to " << C.dbname() << std::endl;
    }
    catch (const std::exception &e)
    {
        std::cerr << e.what() << std::endl;
        return 1;
    }
    return 0;
}
// Makefile
CC              = g++
SRCS            = main.cpp
OBJS            = main.o
TARGET          = main
LIB        	= -L/usr/local/Cellar/libpqxx/6.2.5_5/lib
INC             = -I/usr/local/Cellar/libpqxx/6.2.5_5/include

$(TARGET) : $(OBJS)
	$(CC) -std=c++11 -o main main.o $(LIB_DIRS) $(INC) -lpqxx

$(OBJS) :
	$(CC) -std=c++11  -c -o main.o main.cpp

clean :
	rm -f *.o
	rm -f main

아래의 명령어를 실행합니다.

cd your-project-path

make

./main

터미널 실행 화면

kwon이라는 db에 연결이 되었습니다.

 

간단하게 Insert 명령어를 실행 해 보겠습니다.

#include <iostream>
#include <pqxx/pqxx>

using namespace std;
using namespace pqxx;

int main()
{
    char * sql;
    
    try {
        connection conn("dbname = kwon");
        
        if (conn.is_open()) {
            cout << "Opened database successfully: " << conn.dbname() << endl;
        } else {
            cout << "Can't open database" << endl;
            return 1;
        }
        
        sql = "INSERT INTO public.user(id, pw) VALUES ('kwon','1234'); ";
        
        // Execute SQL query
        work W(conn);
        W.exec( sql );
        W.commit();
        cout << "Records created successfully" << endl;
        conn.disconnect ();
        
    } catch (const std::exception &e) {
        cerr << e.what() << std::endl;
        return 1;
    }
    
}

터미널 실행 화면

insert 명령어가 제대로 실행된 것을 확인했습니다.

이제 이 sql 문을 수정해서 다양하게 활용할 수 있습니다.

 

CMake로도 연결하고 싶었는데 config.cmake 파일을 찾을수가 없어서 별명으로 연결하지 못하고

위의 Makefile의 include, lib, target을 복붙해줘야 했습니다.

검색해봐도 잘 안나오는데 libpqxx의 config.cmake 파일을 직접 만들어야 하는건지ㅠㅜ 헤매고 있습니다.

아시는 분은 댓글로 알려주시면 감사하겠습니다.

 


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D