legongju.com
我们一直在努力
2025-01-10 09:23 | 星期五

C++ table与数据库的交互方式

在C++中,与数据库进行交互通常需要使用数据库连接库。这些库允许你在C++程序中执行SQL查询并处理结果。以下是一些常见的数据库连接库和交互方式:

  1. MySQL: 使用MySQL Connector/C++库进行交互。
#include
#include

int main() {
    const std::string url = "mysqlx://user:password@localhost";
    mysqlx::Session session(url);
    mysqlx::Schema schema = session.getSchema("test");
    mysqlx::Table table = schema.getTable("sample_table");

    // 插入数据
    table.insert("name", "age")
        .values("Alice", 25)
        .execute();

    // 查询数据
    mysqlx::RowResult result = table.select().execute();
    for (const auto &row : result) {
        std::cout<< row[0].get() << ", "<< row[1].get()<< std::endl;
    }

    return 0;
}
  1. PostgreSQL: 使用libpq库进行交互。
#include
#include 

int main() {
    const char *conninfo = "dbname=test user=postgres password=secret hostaddr=127.0.0.1 port=5432";
    PGconn *conn = PQconnectdb(conninfo);

    if (PQstatus(conn) != CONNECTION_OK) {
        std::cerr << "Connection to database failed: " << PQerrorMessage(conn)<< std::endl;
        PQfinish(conn);
        return 1;
    }

    // 执行查询
    PGresult *res = PQexec(conn, "SELECT name, age FROM sample_table");
    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
        std::cerr << "Query failed: " << PQerrorMessage(conn)<< std::endl;
        PQclear(res);
        PQfinish(conn);
        return 1;
    }

    // 处理结果
    int rows = PQntuples(res);
    for (int i = 0; i< rows; ++i) {
        std::cout << PQgetvalue(res, i, 0) << ", " << PQgetvalue(res, i, 1)<< std::endl;
    }

    PQclear(res);
    PQfinish(conn);
    return 0;
}
  1. SQLite: 使用SQLite C++库(如sqlite_modern_cpp)进行交互。
#include
#include

int main() {
    sqlite::database db("test.db");

    // 创建表
    db << "CREATE TABLE IF NOT EXISTS sample_table (name TEXT, age INTEGER);";

    // 插入数据
    db << "INSERT INTO sample_table (name, age) VALUES (?, ?);"
       << "Alice"
       << 25;

    // 查询数据
    db << "SELECT name, age FROM sample_table;" >> [&](const std::string &name, int age) {
        std::cout<< name << ", "<< age<< std::endl;
    };

    return 0;
}

请注意,这些示例仅展示了基本的数据库操作。实际应用中,你可能需要处理更复杂的查询和事务。同时,确保正确处理错误和异常。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/98303.html

相关推荐

  • 如何在C++中使用strftime输出日期和时间

    如何在C++中使用strftime输出日期和时间

    strftime 是 C++ 标准库中的一个函数,用于将日期和时间格式化为字符串。以下是如何在 C++ 中使用 strftime 输出日期和时间的示例:
    #include
    #includ...

  • 如何在C++中使用strftime格式化时间

    如何在C++中使用strftime格式化时间

    strftime 是 C++ 标准库中的一个函数,用于将 tm 结构体(包含日期和时间信息)格式化为字符串。以下是如何在 C++ 中使用 strftime 的示例:
    #include

  • strftime函数在C++中的使用方法是什么

    strftime函数在C++中的使用方法是什么

    strftime 是一个 C 语言库函数,用于将时间格式化为字符串。在 C++ 中,你可以通过 头文件使用这个函数。以下是 strftime 函数在 C++ 中的基本用法:
    #incl...

  • 如何在C++中使用strftime进行日期计算

    如何在C++中使用strftime进行日期计算

    strftime 是 C++ 标准库中的一个函数,用于将 tm 结构(包含日期和时间信息)格式化为字符串。但是,strftime 本身并不执行日期计算。要在 C++ 中进行日期计算,...

  • 如何处理C++ table中的数据冲突

    如何处理C++ table中的数据冲突

    处理C++表(例如,二维向量或数组)中的数据冲突可以通过以下方法来实现: 使用标志位:在表格中添加一个额外的布尔值(true/false)列,用于表示该行或列是否有...

  • txt文件的作用是什么

    txt文件的作用是什么

    TXT文件是一种常见的文本文件格式,主要用于存储和显示纯文本信息。以下是关于TXT文件作用的相关信息:
    TXT文件的基本作用 文本记录:TXT文件用于存储简单的...

  • option类型在C++设计模式中的应用

    option类型在C++设计模式中的应用

    在C++中,std::optional是一个模板类,它表示一个可能存在或缺失的值 作为返回值:当函数可能需要返回一个空值时,使用std::optional作为返回类型是一种很好的选...

  • C++ option类型与多态性的关系

    C++ option类型与多态性的关系

    在 C++ 中,std::optional 是一个模板类,用于表示一个值可能存在也可能不存在。它提供了一种更安全、更明确的方式来处理可能缺失的值,而不是使用裸指针、空指针...