Ubuntu上C++如何与数据库进行交互
在Ubuntu上,C++可通过MySQL、PostgreSQL和SQLite三种主流关系型数据库交互。每种数据库均需依次完成客户端库安装、连接器配置,然后编写代码实现连接与查询,最后编译运行。该流程完整涵盖了安装、配置、编码、编译四个关键步骤,为C++数据库开发提供标准路径。在Ubuntu平台上这是一套通用做法,开发者可参照执行,快速实现数据访。
在Ubuntu上搞C++数据库开发,其实路子还挺宽。关键是要选对工具链,把环境配顺。下面直接上干货,从最常见的三种数据库说起:MySQL、PostgreSQL和SQLite。每种都会走一遍安装、写代码、编译运行的完整流程,方便你参考。

1. 使用MySQL数据库
安装MySQL客户端库
先把MySQL服务器和客户端库装好,这是基础。
sudo apt update
sudo apt install mysql-server mysql-client
安装MySQL C++连接器
装libmysqlclient-dev这个包,里面就带了C++的连接器。
sudo apt install libmysqlclient-dev
编写C++代码
写一个简单的程序,连接MySQL并执行查询。代码挺直观的,初始化连接、连上、执行SQL、取结果、清理收尾。
#include
#include
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "SELECT * FROM table_name")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_store_result(conn);
while ((row = mysql_fetch_row(res)) != NULL) {
std::cout << row[0] << " " << row[1] << std::endl;
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}
编译和运行
用g++编译,记得链接mysqlclient库。
g++ -o myprogram myprogram.cpp -lmysqlclient
./myprogram
2. 使用PostgreSQL数据库
安装PostgreSQL客户端库
先装PostgreSQL服务端和客户端开发包。
sudo apt update
sudo apt install postgresql postgresql-contrib libpq-dev
安装PostgreSQL C++连接器
主要通过libpq-fe.h头文件来连接,不过更推荐用pqxx库(C++封装)。上面安装libpq-dev时已经包含了底层库,但pqxx需要单独装。
实际上,如果你直接用libpq的C API也是可以的,但下面代码示例用了pqxx,更符合C++风格。所以你可能还需要装libpqxx-dev。
sudo apt install libpqxx-dev
编写C++代码
用pqxx写一个连接和查询的例子:
#include
#include
int main() {
try {
pqxx::connection C("dbname=database user=user password=password hostaddr=127.0.0.1 port=5432");
pqxx::work W(C);
pqxx::result R = W.exec("SELECT * FROM table_name");
for (auto row : R) {
std::cout << row[0].as() << " " << row[1].as() << std::endl;
}
W.commit();
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}
编译和运行
链接pqxx和pq两个库。
g++ -o myprogram myprogram.cpp -lpqxx -lpq
./myprogram
3. 使用SQLite数据库
安装SQLite3
SQLite轻量级,直接装sqlite3和开发库。
sudo apt update
sudo apt install sqlite3 libsqlite3-dev
编写C++代码
SQLite的C接口也很简洁,这里用一个回调函数来处理查询结果:
#include
#include
static int callback(void *data, int argc, char **argv, char **azColName) {
for (int i = 0; i < argc; i++) {
std::cout << azColName[i] << ": " << (argv[i] ? argv[i] : "NULL") << std::endl;
}
std::cout << std::endl;
return 0;
}
int main() {
sqlite3 *db;
char *err_msg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
return 1;
}
rc = sqlite3_exec(db, "SELECT * FROM table_name", callback, 0, &err_msg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << err_msg << std::endl;
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_close(db);
return 0;
}
编译和运行
链接sqlite3库。
g++ -o myprogram myprogram.cpp -lsqlite3
./myprogram
以上三种方案覆盖了Ubuntu上最常见的数据库交互场景。实际项目中怎么选?主要看你的数据规模、并发需求以及是否要分布式。MySQL和PostgreSQL适合服务端应用,SQLite则更适合嵌入式或单用户场景。根据自己的需求挑一个合适的,照着步骤配好环境就能跑起来了。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















