在C++中处理数据库:PostgreSQL和MongoDB入门指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++数据库操作简介

\n\n

现代应用程序很少能离开数据存储。C++是一种强大的系统编程语言,非常适合处理数据库的高负载项目。本文将讲解如何连接到两种流行的数据库管理系统——关系型PostgreSQL和文档型MongoDB——并执行基本操作(CRUD)。

\n\n

本材料面向初学者:您将了解需要哪些库、如何安装它们,并看到现成的代码示例。阅读后,您将能够独立地将C++与这些数据库中的任何一个集成。

\n\n

C++中的PostgreSQL:关系型方法

\n\n

PostgreSQL是最可靠的开源关系型数据库管理系统之一。要从C++中使用它,需要使用libpqxx库——这是C库libpq的官方封装。

\n\n

安装libpqxx

\n\n

在Linux(Ubuntu/Debian)上,使用一条命令即可安装:

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

对于Windows,可以使用vcpkg:

\n\n
vcpkg install libpqxx
\n\n

连接并执行查询

\n\n

来看一个最简单的示例:连接到数据库、创建表并插入数据。

\n\n
#include <iostream>\n#include <pqxx/pqxx>\n\nint main() {\n    try {\n        // 连接到数据库(请替换为您自己的参数)\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 << "成功连接到PostgreSQL!" << std::endl;\n        }\n\n        // 创建事务\n        pqxx::work txn(conn);\n\n        // 创建表\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        // 插入数据\n        txn.exec("INSERT INTO users (name, email) VALUES "\n                 "('伊万·彼得罗夫', 'ivan@example.com'), "\n                 "('玛丽亚·斯米尔诺娃', 'maria@example.com')");\n\n        // 提交事务\n        txn.commit();\n        std::cout << "数据成功添加!" << std::endl;\n\n    } catch (const std::exception &e) {\n        std::cerr << "错误:" << e.what() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

读取数据(SELECT)

\n\n

要检索数据,请使用结果迭代器:

\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

重要提示:始终使用参数化查询以防止SQL注入:

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

C++中的MongoDB:文档型方法

\n\n

MongoDB是一种NoSQL数据库,以BSON(二进制JSON)格式存储数据。C++有官方驱动mongocxx。

\n\n

安装mongocxx

\n\n

在Linux上安装(需要预先安装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

连接和CRUD操作

\n\n

以下代码演示了连接到

博客

书籍推荐