PostgresSQL
Como conectar uma aplicação C++ a uma base de dados PostgreSQL usando Visual Studio e a biblioteca libpqxx (a interface C++ oficial para PostgreSQL).
1. Pré-requisitos
- PostgreSQL instalado no Windows.
- Visual Studio (2017, 2019 ou 2022).
- libpqxx (biblioteca C++ para PostgreSQL) e dependências do libpq.
- Variáveis de ambiente e caminhos devidamente configurados.
2. Instalação da libpqxx e dependências
Passo 1: Descarregue e instale o PostgreSQL
- Instale o PostgreSQL pelo instalador oficial para Windows.
- Anote o diretório de instalação (ex:
C:\Program Files\PostgreSQL\16).
Passo 2: Descarregue a libpqxx
- Baixe o código-fonte da libpqxx ou procure por binários prontos.
- Se necessário, compile a libpqxx para Windows usando CMake e Visual Studio, seguindo as instruções do repositório.
Passo 3: Copie arquivos necessários
- Inclua os diretórios de cabeçalhos da
libpqxxe doPostgreSQL\include. - Inclua os diretórios de bibliotecas do
libpqxxe doPostgreSQL\lib. - Certifique-se de que as DLLs (
libpq.dll,libpqxx.dllse houver) estejam na pasta do executável ou em um diretório do PATH.
3. Configuração do Projeto no Visual Studio
- Crie um novo projeto C++ vazio.
- No menu do projeto, em Propriedades:
- C/C++ > Geral > Diretórios de Inclusão Adicionais:
Adicione os caminhos para os headers do PostgreSQL e da libpqxx. - Linker > Geral > Diretórios de Biblioteca Adicionais:
Adicione os caminhos para os arquivos.libdo PostgreSQL e da libpqxx. - Linker > Entrada > Dependências Adicionais:
Adicionelibpqxx.libelibpq.lib.
- C/C++ > Geral > Diretórios de Inclusão Adicionais:
4. Exemplo Básico de Código para Conexão
#include <iostream>
#include <pqxx/pqxx> // Inclua o cabeçalho principal da libpqxx
int main() {
try {
// Substitua os parâmetros de conexão conforme seu ambiente
pqxx::connection c("user=utiizador password=senha host=localhost port=5432 dbname=nome_base_dados");
if (c.is_open()) {
std::cout << "Conexão estabelecida com sucesso!" << std::endl;
} else {
std::cout << "Falha ao conectar." << std::endl;
return 1;
}
// Inicia uma transação
pqxx::work w(c);
// Cria uma tabela (se desejar)
w.exec("CREATE TABLE IF NOT EXISTS exemplo (id SERIAL PRIMARY KEY, nome VARCHAR(50));");
// Insere um registro
w.exec("INSERT INTO exemplo (nome) VALUES ('Teste');");
// Consulta registros
pqxx::result r = w.exec("SELECT id, nome FROM exemplo;");
for (const auto& row : r) {
std::cout << "id: " << row[0].as<int>() << ", nome: " << row[1].as<std::string>() << std::endl;
}
// Confirma as alterações
w.commit();
c.disconnect();
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}
- Substitua os dados de conexão (
user,password,host,dbname) pelos seus. - O método
w.commit()é essencial para gravar alterações na base de dados.
5. Compilação e Execução
- Compile o projeto normalmente pelo Visual Studio.
- Certifique-se de que as DLLs (
libpq.dlle dependências) estejam acessíveis pelo executável.
6. Observações e Dicas
- Se receber erros de linkagem, confira se os caminhos das bibliotecas e headers estão corretos.
- A libpqxx facilita operações modernas em C++ e é recomendada para novos projetos.
- Para mais exemplos, consulte a documentação oficial da libpqxx.
