温馨提示×

ubuntu c++怎样连数据库

小樊
48
2026-09-11 08:18:46
栏目: 编程语言

在 Ubuntu 上使用 C++ 连接数据库,常见做法取决于你用的数据库类型。下面以 MySQLSQLite 为例,给你最常用、最实用的方案。


一、C++ 连接 MySQL(最常用)

1️⃣ 安装 MySQL 及开发库

sudo apt update
sudo apt install mysql-server
sudo apt install libmysqlclient-dev

Ubuntu 20.04+ 可能是:

sudo apt install libmysqlclient-dev
# 或
sudo apt install libmariadb-dev

2️⃣ 示例 C++ 代码(使用 MySQL C API)

#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",
        0, nullptr, 0)) {
        std::cerr << mysql_error(conn) << std::endl;
        return 1;
    }

    if (mysql_query(conn, "SELECT * FROM users")) {
        std::cerr << mysql_error(conn) << std::endl;
        return 1;
    }

    MYSQL_RES* res = mysql_store_result(conn);
    MYSQL_ROW row;
    while ((row = mysql_fetch_row(res))) {
        std::cout << row[0] << " " << row[1] << std::endl;
    }

    mysql_free_result(res);
    mysql_close(conn);
    return 0;
}

3️⃣ 编译

g++ main.cpp -o test -lmysqlclient

二、C++ 连接 SQLite(轻量、无需服务)

1️⃣ 安装 SQLite 开发库

sudo apt install libsqlite3-dev

2️⃣ 示例代码

#include <sqlite3.h>
#include <iostream>

int main() {
    sqlite3* db;
    if (sqlite3_open("test.db", &db)) {
        std::cerr << "Can't open database\n";
        return 1;
    }

    const char* sql = "SELECT * FROM users;";
    sqlite3_exec(db, sql, [](void*, int argc, char** argv, char**) {
        for (int i = 0; i < argc; i++)
            std::cout << argv[i] << " ";
        std::cout << std::endl;
        return 0;
    }, nullptr, nullptr);

    sqlite3_close(db);
    return 0;
}

3️⃣ 编译

g++ main.cpp -o test -lsqlite3

三、更现代的 C++ 方式(推荐)

✅ 使用第三方库

  • SQLiteCpp(SQLite 封装)
  • MySQL Connector/C++
  • ODBC(unixODBC)
  • libpqxx(PostgreSQL)

例如 MySQL Connector/C++:

sudo apt install libmysqlcppconn-dev

四、选择建议

场景 推荐
本地小项目 SQLite
服务端应用 MySQL / PostgreSQL
高性能 PostgreSQL + libpqxx
跨平台 ODBC

如果你告诉我:

  • 哪种数据库
  • Ubuntu 版本
  • 是否用 CMake

我可以直接给你一份可运行项目模板

0