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 数据库的更多相关文章

  1. Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决

    Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...

  2. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

  3. SQL Server,MySQL,Oracle三者的区别

    SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...

  4. asp.net连接SQL server,SQLLite,Oracle,Access数据库

    asp.net中连接数据库有两种方式为appSettings和connectionStrings connectionStrings比较常用,所以只讲一下connectionStrings方式的连接 ...

  5. SQL Server,MySql,Oracle数据库的默认端口号

    SQL Server默认端口号为:1433 MySQL 默认端口号为:3306 Oracle 默认端口号为:1521

  6. JMeter配置JDBC测试SQL Server/MySQL/ORACLE

    一.配置SQL Server 1.下载sql驱动,将sqljdbc4.jar放到JMeter安装目录/lib下. 2.启动JMeter,右键添加->配置文件->JDBC Connectio ...

  7. sql server,mysql,oracle平时用法的区别

    由于工作的原因,上家公司一直使用的oracle,后来接触了的几个项目,既有使用mysql的又有使用sqlserver,自己在使用sqlserver及mysql要实现某功能时,经常要在网上找来找去,所以 ...

  8. 本地数据库(SQL Server)远程连接服务器端服务器

    本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...

  9. FineReport9.0定义数据连接(创建与SQL Server 2016数据库的连接)

    1.下载并安装好FineReport9.0和SQL Server 2016 2.开始——>所有应用——>Microsoft SQL Server 2016——>SQL Server ...

  10. 在Windows Server 2008 R2 Server中,连接其他服务器的数据库遇到“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker ”

    项目代码和数据库部署在不同的Windows Server 2008 R2 Server中,错误日志显示如下: "未启用当前数据库的 SQL Server Service Broker,因此查 ...

随机推荐

  1. 记一次因为C#官方扩展导致自动补全出错的情况 (C# & Godot)

    现象 最近使用Vscode结合Godot使用时突然发现自动补全出问题了,发现一部分自动补全能弹出补全项目,但是确认后不起作用,还会吞掉弹出自动补全后输入的字符.大概是下图这样的感觉(截图时已修好,图为 ...

  2. [信息安全] 加密算法:md5摘要算法 / sha256算法

    1 MD5 1.1 算法定义 MD5的全称为 Message-Digest Algorithm,是一种被广泛使用的单向散列函数.属于Hash算法中一种比较重要算法--具有单项加密.加密结果唯一.安全性 ...

  3. 在 Visual Studio 2022 中使用文件对比

    在最新版本的 Visual Studio 2022 中,加入了新的功能特性--"文件对比". 在开发过程中,开发人员有时会需要比对文件差异,特别是代码文件,之前很多时候是借助版本控 ...

  4. 【Visual Studio 使用技巧分享】任务列表的使用

    前言 Visual Studio 开发工具的熟练使用,能够潜在的提升我们工作效率,而且一些开发技巧的使用,会让我们的工作显得那么方便快捷.那么你知道VS中有哪些你不知道的使用小技巧呢?接下来,我们就来 ...

  5. 使用flask开发web应用

    Flask环境搭建 要开发flash应用,我们需要做一些准备工作 我写了个初始化的脚本 Pip_init.sh来安装初始工作 可以到我的git上去下载该脚本进行初始化安装 要启动flask应用,我们需 ...

  6. Windows 某些软件显示"口口"解决办法

    和乱码不同,文字变成"口口",一般是语言环境出错了. 解决办法 开始->控制面板->区域 (时钟.语言和区域)->区域:更改设置->管理->非 Uni ...

  7. SQL select关联表查询 统计另一个表合计

    db_order 是记录订单的,  一个订单一条记录.(oid, 运费, 实收金额, 产品KEY.......) db_soid  是记录出售商品的 (id, 商品名称, 售价, 数量, 成本, 标识 ...

  8. RocketMQ 系列(四) 消息存储

    RocketMQ 系列(四) 消息存储 本文是 RocketMQ 系列的第四篇,下面是前面几篇的文章,不清楚的话点击看一下吧. RocketMQ系列(一) 基本介绍 RocketMQ 系列(二) 环境 ...

  9. Oracle主键自增列

    SQL Server创建主键自增列我们可以使用"ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY"一步到位创建,而Oracle创建主键自增列和SQ ...

  10. FastGPT 接入飞书(不用写一行代码)

    FastGPT V4 版本已经发布,可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景,例如联网谷歌搜索,操作数据库等等,功能非常强大,还没用过的同学赶紧去试试吧. 飞书相比同类产品算是 ...