C++数据库操作简介
\n\n现代应用程序很少能离开数据存储。C++是一种强大的系统编程语言,非常适合处理数据库的高负载项目。本文将讲解如何连接到两种流行的数据库管理系统——关系型PostgreSQL和文档型MongoDB——并执行基本操作(CRUD)。
\n\n本材料面向初学者:您将了解需要哪些库、如何安装它们,并看到现成的代码示例。阅读后,您将能够独立地将C++与这些数据库中的任何一个集成。
\n\nC++中的PostgreSQL:关系型方法
\n\nPostgreSQL是最可靠的开源关系型数据库管理系统之一。要从C++中使用它,需要使用libpqxx库——这是C库libpq的官方封装。
\n\n安装libpqxx
\n\n在Linux(Ubuntu/Debian)上,使用一条命令即可安装:
\n\nsudo apt-get install libpqxx-dev\n\n对于Windows,可以使用vcpkg:
\n\nvcpkg 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\npqxx::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\ntxn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2)",\n "阿列克谢", "alex@example.com");\n\nC++中的MongoDB:文档型方法
\n\nMongoDB是一种NoSQL数据库,以BSON(二进制JSON)格式存储数据。C++有官方驱动mongocxx。
\n\n安装mongocxx
\n\n在Linux上安装(需要预先安装MongoDB C Driver):
\n\nsudo 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以下代码演示了连接到