Linux下C++如何进行数据库连接

在Linux下使用C++连接数据库,通常有以下几种方式:

  1. 使用MySQL C API:
    MySQL官方提供了一个C语言编写的API,可以用于连接和操作MySQL数据库。首先需要安装MySQL的开发库,然后使用以下代码示例进行连接:
#include 
#include 

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    if (!mysql_real_connect(conn, "localhost", "username", "password", "database_name", 0, NULL, 0)) {
        std::cerr << "Error: unable to connect to database" << std class="hljs-built_in">exit(1);
    }

    if (mysql_query(conn, "SHOW TABLES")) {
        std::cerr << "Error: query failed" << std class="hljs-built_in">exit(1);
    }

    res = mysql_store_result(conn);

    while ((row = mysql_fetch_row(res))) {
        std::cout << row class="hljs-number">0] << std class="hljs-built_in">mysql_free_result(res);
    mysql_close(conn);

    return 0;
}
  1. 使用SQLite C/C++ API:
    SQLite是一个轻量级的嵌入式数据库,它的API支持C和C++。首先需要安装SQLite的开发库,然后使用以下代码示例进行连接:
#include 
#include 

static int callback(void *data, int argc, char **argv, char **azColName) {
    for (int i = 0; i < argc class="hljs-string">": " << (argv[i] ? argv[i] : "NULL") << std class="hljs-keyword">return 0;
}

int main() {
    sqlite3 *db;
    char *err_msg = 0;
    int rc;

    rc = sqlite3_open("test.db", &db);

    if (rc != SQLITE_OK) {
        std::cerr << "Error: unable to open database" << std class="hljs-built_in">sqlite3_close(db);
        exit(1);
    }

    rc = sqlite3_exec(db, "SELECT * FROM users", callback, 0, &err_msg);

    if (rc != SQLITE_OK) {
        std::cerr << "Error: query failed" << std class="hljs-built_in">sqlite3_free(err_msg);
        sqlite3_close(db);
        exit(1);
    }

    sqlite3_close(db);

    return 0;
}
  1. 使用第三方库:
    还有一些第三方库可以用于连接数据库,例如MySQL++、SOCI等。这些库通常提供了更高级的抽象和更好的易用性。以MySQL++为例,首先需要安装MySQL++的开发库,然后使用以下代码示例进行连接:
#include 
#include 

int main() {
    mysqlpp::Connection conn(false);

    if (conn.connect("database_name", "localhost", "username", "password")) {
        std::cout << "Connected to database" << std class="hljs-keyword">else {
        std::cerr << "Error: unable to connect to database" << std class="hljs-built_in">exit(1);
    }

    mysqlpp::Query query = conn.query();
    query << "SELECT * FROM users";
    mysqlpp::StoreQueryResult result = query.store();

    for (size_t i = 0; i < result class="hljs-built_in">num_rows(); ++i) {
        std::cout << result class="hljs-string">"username"] << std class="hljs-keyword">return 0;
}

注意:在使用这些库之前,请确保已经安装了相应的开发库和头文件。在编译时,需要链接相应的库文件。例如,对于MySQL C API,可以使用-lmysqlclient选项进行链接。