[开发|C++] C++数据库框架

本文介绍了QtSQL和SOCI这两个C++库,它们用于跨平台的数据库访问。QtSQL是Qt框架的一部分,提供了一个简单的ORM机制,支持MySQL等数据库。示例展示了如何连接数据库、执行查询和插入数据。SOCI则是一个轻量级的ORM框架,具有高度可定制性,支持多种数据库,如SQLite3。示例演示了创建表、插入记录和查询数据的过程。
摘要由CSDN通过智能技术生成
  1. Qt SQL:Qt是一个跨平台的应用程序框架,其中包括一个SQL模块,提供了对多种数据库的访问支持。Qt SQL提供了一个简单的ORM框架,可以将C++对象映射到关系型数据库表中。Qt SQL可以与MySQL、PostgreSQL、SQLite和Oracle等多种数据库一起使用。
    以下是一个简单的 Qt SQL 使用示例:
#include <QtSql>
#include <QDebug>

int main()
{
    // 连接数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("test_db");
    db.setUserName("root");
    db.setPassword("password");
    if (!db.open()) {
        qDebug() << "Failed to connect to database!";
        return 1;
    }

    // 执行 SQL 查询
    QSqlQuery query(db);
    query.exec("SELECT * FROM users");
    while (query.next()) {
        int id = query.value("id").toInt();
        QString name = query.value("name").toString();
        qDebug() << "id:" << id << "name:" << name;
    }

    // 插入一条数据
    QSqlQuery insert_query(db);
    insert_query.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
    insert_query.bindValue(0, "Alice");
    insert_query.bindValue(1, 18);
    if (!insert_query.exec()) {
        qDebug() << "Failed to insert data!";
        return 1;
    }

    db.close();
    return 0;
}

这个示例演示了如何连接到一个名为 test_db 的 MySQL 数据库,执行一个查询以及插入一条数据。你需要根据自己的实际情况更改数据库的连接信息和 SQL 语句。

  1. SOCI:SOCI是一个轻量级的ORM框架,支持多种数据库,包括MySQL、Oracle、PostgreSQL和SQLite等。SOCI具有高度可定制性,可以通过自定义类型映射和查询操作来满足特定的需求。
    官网地址
    仓库地址
    以下是使用 SOCI 的简单示例:
#include <iostream>
#include <soci/soci.h>
#include <soci/sqlite3/soci-sqlite3.h>

int main() {
    try {
        // Connect to the database
        soci::session sql(soci::sqlite3, "test.db");

        // Create a table
        sql << "create table if not exists people ("
            << "id integer primary key autoincrement, "
            << "name varchar(255), "
            << "age integer"
            << ")";

        // Insert a record
        sql << "insert into people (name, age) values ('John', 30)";

        // Query the database
        soci::rowset<soci::row> rows = (sql.prepare << "select name, age from people");
        for (soci::rowset<soci::row>::const_iterator it = rows.begin(); it != rows.end(); ++it) {
            std::string name;
            int age;
            soci::tie(name, age) = *it;
            std::cout << "Name: " << name << ", Age: " << age << std::endl;
        }
    } catch (std::exception const &e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

这个示例展示了如何连接到 SQLite3 数据库、创建一个表、插入一条记录和查询记录。在 SOCI 中,可以使用 session 对象来表示数据库会话,它的构造函数接受两个参数:数据库类型和连接字符串。在这个示例中,我们使用 soci::sqlite3 作为数据库类型,并指定数据库文件名为 test.db
使用 SOCI 操作数据库需要使用 SQL 语句,这些语句可以直接使用字符串拼接的方式构建,也可以使用 SOCI 提供的查询构建器。在这个示例中,我们使用字符串拼接的方式创建表和插入记录,使用查询构建器查询记录。在 SOCI 中,查询构建器使用 prepare 方法创建,然后可以使用 bind 方法绑定参数,最后使用 execute 方法执行查询。执行查询之后,可以使用 rowset 对象迭代查询结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值