117.info
人生若只如初见

Ubuntu C++如何进行数据库连接

在Ubuntu上使用C++进行数据库连接,通常需要使用数据库提供的客户端库。以下是一些常见数据库的连接方法:

1. MySQL

对于MySQL数据库,你可以使用libmysqlclient-dev库。

安装库

sudo apt-get update
sudo apt-get install libmysqlclient-dev

示例代码

#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")) {
        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] << " " << row[1] << std::endl;
    }

    // 释放资源
    mysql_free_result(res);
    mysql_close(conn);

    return 0;
}

编译

g++ -o mysql_example mysql_example.cpp -lmysqlclient

2. PostgreSQL

对于PostgreSQL数据库,你可以使用libpq-fe.h库。

安装库

sudo apt-get update
sudo apt-get install libpq-dev

示例代码

#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");

        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;
}

编译

g++ -o postgresql_example postgresql_example.cpp -lpqxx -lpq

3. SQLite

对于SQLite数据库,你可以使用sqlite3库。

安装库

sudo apt-get update
sudo apt-get install libsqlite3-dev

示例代码

#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;";
    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;
}

编译

g++ -o sqlite_example sqlite_example.cpp -lsqlite3

这些示例展示了如何在Ubuntu上使用C++连接到不同的数据库并执行简单的查询。根据你的具体需求,你可能需要调整代码以适应不同的数据库结构和查询。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fea11AzsKBgFfBFE.html

推荐文章

  • ubuntu中copidar命令安全注意事项

    在Ubuntu中,copidar命令本身并不是一个内建的命令。可能你是指cp和find命令的组合,用于复制文件和目录,同时监视文件系统的变化。以下是关于在使用这些命令时应...

  • Ubuntu MongoDB如何高效配置

    在Ubuntu上高效配置MongoDB涉及多个步骤,包括安装、配置、优化以及安全设置。以下是一个详细的指南:
    安装MongoDB 更新包列表: sudo apt-get update 安装...

  • Ubuntu MinIO安装后如何进行性能测试

    在Ubuntu上安装MinIO后,进行性能测试可以帮助您了解系统的性能表现,并确保它满足您的需求。以下是一些常用的性能测试方法和步骤:
    性能测试方法 使用fio进...

  • Ubuntu Apache2如何提升安全性

    要提升Ubuntu上Apache2的安全性,可以采取以下措施: 更新系统和软件包: 定期更新系统和软件包,使用以下命令来更新系统和安装安全补丁:sudo apt update && su...

  • 怎样提升CentOS Apache2访问速度

    要提升CentOS Apache2的访问速度,可以采取以下几种优化策略: 启用KeepAlive: 在Apache配置文件(/etc/httpd/conf/httpd.conf)中添加以下行来启用KeepAlive:...

  • Debian系统Laravel依赖如何管理

    在Debian系统中,使用Laravel框架时,可以通过以下步骤来管理项目的依赖: 安装Composer:Composer是PHP的依赖管理工具,用于安装和管理Laravel项目所需的库和扩...

  • Java在Ubuntu上的兼容性问题怎么处理

    Java在Ubuntu上的兼容性问题可以通过以下几个步骤来解决:
    1. 确保Java版本兼容 检查Java版本:首先,确认你安装的Java版本是否与你的应用程序兼容。可以在...

  • Debian中Filezilla端口设置方法

    在Debian系统中使用FileZilla时,端口的设置通常是在连接到FTP服务器时指定的。以下是在Debian系统中使用FileZilla进行端口设置的步骤: 打开FileZilla:找到Fil...