实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库

这篇具有很好参考价值的文章主要介绍了实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库

 文章来源地址https://www.toymoban.com/news/detail-746743.html

C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用 C++ 连接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。

  1. 连接 SQL Server 数据库

要使用 C++ 连接 SQL Server 数据库,可以使用 Microsoft 的 ADODB 库。以下是一个示例代码:

#include <iostream>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")

int main() {
    CoInitialize(NULL); // 初始化 COM 库
    _ConnectionPtr pConnection("ADODB.Connection"); // 创建 Connection 对象
    _bstr_t strConnect = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;User ID=sa;Password=123456"; // 连接字符串
    pConnection->Open(strConnect, NULL, NULL, NULL); // 连接数据库

    if (pConnection->State) {
        _CommandPtr pCommand("ADODB.Command"); // 创建 Command 对象
        _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查询语句
        pCommand->ActiveConnection = pConnection; // 设置连接对象
        pCommand->CommandText = strSQL; // 设置 SQL 语句
        _RecordsetPtr pRecordset("ADODB.Recordset"); // 创建 Recordset 对象
        pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 执行查询并返回结果集

        while (!pRecordset->EndOfFile) { // 遍历结果集
            // 处理数据
        }
    }

    pConnection->Close(); // 关闭连接
    CoUninitialize(); // 关闭 COM 库
    return 0;
}
  1. 连接 MySQL 数据库

要使用 C++ 连接 MySQL 数据库,可以使用 MySQL Connector/C++ 库。以下是一个示例代码:

#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

int main() {
    sql::mysql::MySQL_Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::ResultSet *res;

    driver = sql::mysql::get_mysql_driver_instance(); // 获取 MySQL 驱动程序实例
    con = driver->connect("tcp://localhost:3306", "user", "password"); // 连接数据库
    stmt = con->createStatement(); // 创建 Statement 对象
    res = stmt->executeQuery("SELECT * FROM MyTable"); // 执行查询并返回结果集

    while (res->next()) { // 遍历结果集
        // 处理数据
    }

    delete res; // 删除结果集对象
    delete stmt; // 删除 Statement 对象
    delete con; // 删除连接对象
    return 0;
}
  1. 连接 Oracle 数据库

要使用 C++ 连接 Oracle 数据库,可以使用 Oracle 提供的 ODBC 驱动程序。以下是一个示例代码:

#include <iostream>
#include <windows.h>
#include <occi.h>

using namespace oracle::occi;

int main() {
    Environment *env = Environment::createEnvironment(); // 创建 OCCI 环境
    Connection *conn = env->createConnection("DRIVER={Oracle ODBC Driver};SERVER=localhost;DATABASE=MyDatabase;UID=user;PWD=password"); // 连接数据库

    if (conn->isValid()) {
        Statement *stmt = conn->createStatement("SELECT * FROM MyTable"); // 创建 Statement 对象
        ResultSet *res = stmt->executeQuery(); // 执行查询并返回结果集

        while (res->next()) { // 遍历结果集
            // 处理数据
        }
    }

    conn->close(); // 关闭连接
    env->terminate(); // 关闭 OCCI 环境
    return 0;
}
  1. 连接 Access 数据库

要使用 C++ 连接 Access 数据库,可以使用 Microsoft 的 ADODB 库。以下是一个示例代码:

#include <iostream>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")

int main() {
    CoInitialize(NULL); // 初始化 COM 库
    _ConnectionPtr pConnection("ADODB.Connection"); // 创建 Connection 对象
    _bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyDatabase.mdb;Persist Security Info=False"; // 连接字符串
    pConnection->Open(strConnect, "", "", adConnectUnspecified); // 连接数据库

    if (pConnection->State) {
        _CommandPtr pCommand("ADODB.Command"); // 创建 Command 对象
        _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查询语句
        pCommand->ActiveConnection = pConnection; // 设置连接对象
        pCommand->CommandText = strSQL; // 设置 SQL 语句
        _RecordsetPtr pRecordset("ADODB.Recordset"); // 创建 Recordset 对象
        pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 执行查询并返回结果集

        while (!pRecordset->EndOfFile) { // 遍历结果集
            // 处理数据
        }
    }

    pConnection->Close(); // 关闭连接
    CoUninitialize(); // 关闭 COM 库
    return 0;
}
  1. 连接 SQLite 数据库

要使用 C++ 连接 SQLite 数据库,可以使用SQLite C++库。以下是一个示例代码:

#include <iostream>
#include <sqlite3.h>
#include <cassert>

int main() {
    sqlite3* db;
    int rc;
    std::string sql;

    // 打开数据库
    rc = sqlite3_open("MyDatabase.db", &db);
    assert(rc == SQLITE_OK);

    // 创建表格
    sql = "CREATE TABLE IF NOT EXISTS MyTable(id INTEGER PRIMARY KEY, name TEXT);";
    rc = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
    assert(rc == SQLITE_OK);

    // 插入数据
    sql = "INSERT INTO MyTable(name) VALUES('hello');";
    rc = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
    assert(rc == SQLITE_OK);

    // 查询数据
    sql = "SELECT * FROM MyTable;";
    rc = sqlite3_exec(db, sql.c_str(), callback, 0, 0);
    assert(rc == SQLITE_OK);

    // 关闭数据库
    sqlite3_close(db);
    return 0;
}
  1. 连接 PostgreSQL 数据库

要使用 C++ 连接 PostgreSQL 数据库,可以使用 PostgreSQL C++ 驱动程序。以下是一个示例代码:

#include <iostream>
#include <postgresql/libpq-fe.h>
#include <cassert>

void callback(void* arg, int argc, char** argv, char** cols) {
    for (int i = 0; i < argc; i++) {
        std::cout << cols[i] << ": " << argv[i] << std::endl;
    }
}

int main() {
    PGconn* conn = PQconnectdb("host=localhost dbname=MyDatabase user=user password=password");
    assert(PQstatus(conn) == CONNECTION_OK);

    // 执行查询
    PGresult* res = PQexec(conn, "SELECT * FROM MyTable");
    assert(PQresultStatus(res) == PGRES_TUPLES_OK);

    // 遍历结果集
    for (int i = 0; i < PQntuples(res); i++) {
        callback(NULL, PQnfields(res), PQgetvalue(res, i), PQgetisnull(res, i));
    }

    // 关闭连接
    PQfinish(conn);
    return 0;
}

7.连接MongoDB数据库的示例:

#include <iostream>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <bsoncxx/json.hpp>
#include <bsoncxx/types.hpp>

int main() {
    mongocxx::instance instance{};
    mongocxx::client conn{mongocxx::uri{"mongodb://localhost:27017"}};

    // 连接到数据库
    mongocxx::database db = conn["MyDatabase"];

    // 创建文档
    bsoncxx::builder::stream::document doc{};
    doc << "name" << "John Doe"
        << "age" << 30
        << "email" << "johndoe@example.com";

    // 插入文档到集合
    db["MyCollection"].insert(doc.view());

    // 查询文档
    mongocxx::cursor cursor = db["MyCollection"].find({});
    while (cursor) {
        bsoncxx::document::view doc = cursor->view();
        std::cout << doc["name"].get_string() << std::endl;
        std::cout << doc["age"].get_int32() << std::endl;
        std::cout << doc["email"].get_string() << std::endl;
        cursor++;
    }

    return 0;
}

这个示例使用了MongoDB C++驱动程序来连接到MongoDB数据库,创建文档并将其插入到集合中,然后查询并打印文档的内容。

 

到了这里,关于实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JaveWeb教程】(25) JDBC、数据库连接池、Lombok 详细代码示例讲解(最全面)

    2.1 介绍 通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。 Mybatis框架,就是对原始的JDBC程序的封装。 那到底什么是JDBC呢,接下来,我们就来介

    2024年01月16日
    浏览(48)
  • 【MySQL】使用C++连接数据库

    创建数据库并选中 创建表并描述表结构 增加删除修改均可正常执行,查询较为复杂,整体代码中有案例 如果查询则需要把查询数据保存到结果集,通过mysql所提供的函数 得到行和列,遍历得到结果。 初始化mysql并返回句柄(默认传入nullptr即可) 如: MYSQL *mfp = mysql_init(nul

    2024年02月13日
    浏览(35)
  • C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽

      在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用SQLite,你需要下载SQLite的C/C++接口,并链接到你的项目中。 首先,确保你已经下载了SQLite的C/C++接口,然后将头文件

    2024年02月04日
    浏览(35)
  • Access数据库连接查询(C++篇)

    Microsoft Office Access是微软发布的一款关系型数据库; 起初是以\\\".mdb\\\"为后缀的文件,支撑其操作的数据库引擎是Microsoft.Jet.OLEDB;随着时间的发展,后面以\\\".access\\\"为后缀的文件,数据库引擎也升级成了Microsoft.ACE.OLEDB; 可创建任意项目,此处直接上截图 步骤一:导入动态链接库

    2024年02月07日
    浏览(48)
  • C++实现MySQL数据库连接池

    MySQL数据库编程、单例模式、STL容器、C++11多线程(线程互斥、线程互斥、线程同步通信和unique_lock)、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型。 为了提升MySQL数据库(基于C/S设计(客户端-服务器))的访问瓶颈,除了在服务器端增加缓冲服务器缓存常用的数

    2024年02月16日
    浏览(36)
  • 【JaveWeb教程】(22) MySQL数据库开发之多表查询:内连接、外连接、子查询 详细代码示例讲解(最全面)

    1.1.1 数据准备 SQL脚本: 1.1.2 介绍 多表查询:查询时从多张表中获取所需数据 单表查询的SQL语句:select 字段列表 from 表名; 那么要执行多表查询,只需要使用逗号分隔多张表即可,如: select 字段列表 from 表1, 表2; 查询用户表和部门表中的数据: 此时,我们看到查询结果中包

    2024年01月22日
    浏览(41)
  • C++ mySQL数据库连接池(windows平台)

    新手学了C++多线程,看了些资料练手写了C++数据库连接池小项目,自己的源码地址 MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和 unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型 为了提高MySQL数

    2024年03月09日
    浏览(35)
  • VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

    这个是B站Up主:程序员程子青的视频  C++封装Mysql增删改查操作_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1m24y1a79o/?p=6spm_id_from=pageDrivervd_source=a934d7fc6f47698a29dac90a922ba5a3 安装mysql :mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径-CSDN博客 创建数据库和表: 参考这篇文章:w

    2024年01月19日
    浏览(38)
  • C++集群聊天服务器 muduo+nginx+redis+mysql数据库连接池 笔记 (下)

    C++集群聊天服务器 网络模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/135991635?spm=1001.2014.3001.5501 C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/136007616?spm=1001.2014.

    2024年02月19日
    浏览(39)
  • MYSQL数据库各种备份策略

    数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 [root@localhost ~]# mysqldump -uroot -p123456 -B school --add-drop-table /

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包