在 Linux 下用 C++ 连接数据库,常见做法取决于你使用的是哪种数据库。下面我按最常用数据库给你一个清晰、实用的说明,并附上示例。
| 数据库 | 推荐方式 |
|---|---|
| MySQL | MySQL C API(libmysqlclient) |
| PostgreSQL | libpq |
| SQLite | SQLite3(单文件,最轻量) |
| Oracle | OCI |
| 通用方式 | ODBC(unixODBC) |
sudo apt install libsqlite3-dev
#include <iostream>
#include <sqlite3.h>
int main() {
sqlite3* db;
if (sqlite3_open("test.db", &db) != SQLITE_OK) {
std::cerr << "无法打开数据库\n";
return -1;
}
std::cout << "数据库打开成功\n";
sqlite3_close(db);
return 0;
}
g++ main.cpp -lsqlite3
✅ 优点:无需数据库服务、跨平台、适合嵌入式/小型项目
sudo apt install libmysqlclient-dev
#include <mysql/mysql.h>
#include <iostream>
int main() {
MYSQL* conn = mysql_init(nullptr);
if (!conn) {
std::cerr << "mysql_init failed\n";
return -1;
}
if (!mysql_real_connect(conn,
"localhost",
"user",
"password",
"testdb",
3306,
nullptr,
0)) {
std::cerr << mysql_error(conn) << std::endl;
return -1;
}
std::cout << "MySQL 连接成功\n";
mysql_close(conn);
return 0;
}
g++ main.cpp -lmysqlclient
sudo apt install libpq-dev
#include <libpq-fe.h>
#include <iostream>
int main() {
PGconn* conn = PQconnectdb("host=localhost dbname=test user=postgres password=123456");
if (PQstatus(conn) != CONNECTION_OK) {
std::cerr << PQerrorMessage(conn) << std::endl;
return -1;
}
std::cout << "PostgreSQL 连接成功\n";
PQfinish(conn);
return 0;
}
g++ main.cpp -lpq
如果你不想直接写 C API,可以用:
| 库 | 特点 |
|---|---|
| libmysqlcppconn | MySQL 官方 C++ 封装 |
| soci | 类似 ORM,支持多种数据库 |
| ODBC + unixODBC | 通用但复杂 |
| Qt SQL | Qt 项目首选 |
✅ 新手 / 工具程序 → SQLite
✅ 服务器 / Web 后端 → MySQL / PostgreSQL
✅ 跨数据库需求 → soci / ODBC
你可以告诉我:
我可以直接给你一个完整可运行项目模板。