Trabalho com bancos de dados em C++: PostgreSQL e MongoDB para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao trabalho com bancos de dados em C++

\n\n

Aplicativos modernos raramente dispensam o armazenamento de dados. C++ é uma linguagem de programação de sistemas poderosa, ideal para projetos de alta carga que trabalham com bancos de dados. Neste artigo, vamos abordar como se conectar a dois SGBDs populares — o relacional PostgreSQL e o orientado a documentos MongoDB — e realizar operações básicas (CRUD).

\n\n

O material é voltado para iniciantes: você aprenderá quais bibliotecas são necessárias, como instalá-las e verá exemplos prontos de código. Após a leitura, você será capaz de integrar C++ com qualquer um desses bancos de dados de forma independente.

\n\n

PostgreSQL em C++: abordagem relacional

\n\n

PostgreSQL é um dos SGBDs relacionais de código aberto mais confiáveis. Para trabalhar com ele a partir de C++, utiliza-se a biblioteca libpqxx — um wrapper oficial sobre a biblioteca C libpq.

\n\n

Instalação do libpqxx

\n\n

No Linux (Ubuntu/Debian), a instalação é feita com um único comando:

\n\n
sudo apt-get install libpqxx-dev
\n\n

Para Windows, pode-se usar o vcpkg:

\n\n
vcpkg install libpqxx
\n\n

Conexão e execução de consulta

\n\n

Vamos considerar um exemplo simples: conexão ao banco de dados, criação de tabela e inserção de dados.

\n\n
#include <iostream>\n#include <pqxx/pqxx>\n\nint main() {\n    try {\n        // Conexão ao BD (substitua os parâmetros pelos seus)\n        pqxx::connection conn("dbname=testdb user=postgres password=secret hostaddr=127.0.0.1 port=5432");\n        \n        if (conn.is_open()) {\n            std::cout << "Conexão ao PostgreSQL bem-sucedida!" << std::endl;\n        }\n\n        // Criação de transação\n        pqxx::work txn(conn);\n\n        // Criação de tabela\n        txn.exec("CREATE TABLE IF NOT EXISTS users ("\n                 "id SERIAL PRIMARY KEY, "\n                 "name VARCHAR(100) NOT NULL, "\n                 "email VARCHAR(100) UNIQUE NOT NULL)");\n\n        // Inserção de dados\n        txn.exec("INSERT INTO users (name, email) VALUES "\n                 "('Ivan Petrov', 'ivan@example.com'), "\n                 "('Maria Smirnova', 'maria@example.com')");\n\n        // Confirmação da transação\n        txn.commit();\n        std::cout << "Dados adicionados com sucesso!" << std::endl;\n\n    } catch (const std::exception &e) {\n        std::cerr << "Erro: " << e.what() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

Leitura de dados (SELECT)

\n\n

Para consultar dados, use o iterador de resultado:

\n\n
pqxx::work txn(conn);\npqxx::result result = txn.exec("SELECT id, name, email FROM users");\n\nfor (const auto &row : result) {\n    int id = row["id"].as<int>();\n    std::string name = row["name"].as<std::string>();\n    std::string email = row["email"].as<std::string>();\n    std::cout << id << " | " << name << " | " << email << std::endl;\n}
\n\n

Importante: Sempre use consultas parametrizadas para proteção contra injeção de SQL:

\n\n
txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2)",\n                "Alexey", "alex@example.com");
\n\n

MongoDB em C++: abordagem orientada a documentos

\n\n

MongoDB é um banco de dados NoSQL que armazena dados no formato BSON (JSON binário). Para C++, existe o driver oficial mongocxx.

\n\n

Instalação do mongocxx

\n\n

Instalação no Linux (requer instalação prévia do MongoDB C Driver):

\n\n
sudo apt-get install libmongoc-dev libbson-dev\ngit clone https://github.com/mongodb/mongo-cxx-driver.git\ncd mongo-cxx-driver\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_MNMLSTC=ON\nmake -j4\nsudo make install
\n\n

Conexão e operações CRUD

\n\n

O código a seguir demonstra a conexão ao

Blogs

Book Recommendations