商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu C++数据库连接怎样做

Ubuntu C++数据库连接怎样做

  发布于2026-07-07 阅读(0)

扫一扫,手机访问

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

Ubuntu C++数据库连接怎样做

MySQL

  1. 安装MySQL客户端库:
    打开终端,先更新包列表,然后安装开发库。

    sudo apt-get update
    sudo apt-get install libmysqlclient-dev
  2. 编写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;
    }
  3. 编译代码:
    链接时需要加上-lmysqlclient

    g++ -o myapp myapp.cpp -lmysqlclient
  4. 运行程序:

    ./myapp

PostgreSQL

  1. 安装PostgreSQL客户端库:

    sudo apt-get update
    sudo apt-get install libpq-dev
  2. 编写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;
    }
  3. 编译代码:
    需要链接libpqxx和libpq两个库。

    g++ -o myapp myapp.cpp -lpqxx -lpq
  4. 运行程序:

    ./myapp

SQLite

  1. 安装SQLite3开发库:

    sudo apt-get update
    sudo apt-get install libsqlite3-dev
  2. 编写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;
    }
  3. 编译代码:
    只需链接-lsqlite3

    g++ -o myapp myapp.cpp -lsqlite3
  4. 运行程序:

    ./myapp

以上是连接MySQL、PostgreSQL和SQLite的基本步骤。根据具体的数据库系统和需求,代码和编译命令可能需要做微调,但整体流程完全是可复用的。选哪种方案,主要看你的应用场景——MySQL和PostgreSQL适合服务端高并发,SQLite则更适合本地单机或嵌入式环境。理解这些差异之后,上手就不难了。

本文转载于:https://www.yisu.com/ask/33382802.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注