发布于2026-07-07 阅读(0)
扫一扫,手机访问
在Ubuntu上使用C++连接数据库,说起来其实是个很常见的需求。无论是做后端服务、嵌入式系统,还是个人小工具,数据库的存取基本是绕不开的一环。目前主流的数据库系统无非是MySQL、PostgreSQL和SQLite,三者各有适用的场景。下面直接进入正题,看看每种方案的具体操作步骤。

安装MySQL客户端库:
打开终端,先更新包列表,然后安装开发库。
sudo apt-get update
sudo apt-get install libmysqlclient-dev
编写C++代码:
MySQL官方提供了C API,直接用即可。代码结构很清晰:初始化连接、执行查询、处理结果、清理收尾。
#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_use_result(conn);
while ((row = mysql_fetch_row(res)) != NULL) {
std::cout << row[0] << std::endl;
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}
编译代码:
链接时需要加上-lmysqlclient。
g++ -o myapp myapp.cpp -lmysqlclient
运行程序:
./myapp
安装PostgreSQL客户端库:
sudo apt-get update
sudo apt-get install libpq-dev
编写C++代码:
这里推荐使用libpqxx,它是libpq的C++封装,用起来更符合现代C++的习惯。
#include
#include
int main() {
try {
pqxx::connection C("dbname=database user=user password=password hostaddr=127.0.0.1 port=5432");
if (C.is_open()) {
std::cout << "Opened database successfully: " << C.dbname() << std::endl;
} else {
std::cout << "Can't open database" << std::endl;
return 1;
}
pqxx::work W(C);
pqxx::result R = W.exec("SELECT * FROM table_name");
for (auto row : R) {
std::cout << row[0].as() << std::endl;
}
W.commit();
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}
编译代码:
需要链接libpqxx和libpq两个库。
g++ -o myapp myapp.cpp -lpqxx -lpq
运行程序:
./myapp
安装SQLite3开发库:
sudo apt-get update
sudo apt-get install libsqlite3-dev
编写C++代码:
SQLite3的API是C风格的,但胜在轻量简单。定义一个回调函数来处理查询结果,是典型的用法。
#include
#include
static int callback(void *NotUsed, 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;
}
const char *sql = "SELECT * FROM table_name;";
rc = sqlite3_exec(db, sql, 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;
}
编译代码:
只需链接-lsqlite3。
g++ -o myapp myapp.cpp -lsqlite3
运行程序:
./myapp
以上是连接MySQL、PostgreSQL和SQLite的基本步骤。根据具体的数据库系统和需求,代码和编译命令可能需要做微调,但整体流程完全是可复用的。选哪种方案,主要看你的应用场景——MySQL和PostgreSQL适合服务端高并发,SQLite则更适合本地单机或嵌入式环境。理解这些差异之后,上手就不难了。
上一篇:Ubuntu中C++库怎么使用
下一篇:Ubuntu C++算法如何优化
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8