实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库
C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用 C++ 连接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。
- 连接 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;
}
- 连接 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;
}
- 连接 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;
}
- 连接 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;
}
- 连接 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;
}
- 连接 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 数据库的更多相关文章
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...
- SQL Server,MySQL,Oracle三者的区别
SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...
- asp.net连接SQL server,SQLLite,Oracle,Access数据库
asp.net中连接数据库有两种方式为appSettings和connectionStrings connectionStrings比较常用,所以只讲一下connectionStrings方式的连接 ...
- SQL Server,MySql,Oracle数据库的默认端口号
SQL Server默认端口号为:1433 MySQL 默认端口号为:3306 Oracle 默认端口号为:1521
- JMeter配置JDBC测试SQL Server/MySQL/ORACLE
一.配置SQL Server 1.下载sql驱动,将sqljdbc4.jar放到JMeter安装目录/lib下. 2.启动JMeter,右键添加->配置文件->JDBC Connectio ...
- sql server,mysql,oracle平时用法的区别
由于工作的原因,上家公司一直使用的oracle,后来接触了的几个项目,既有使用mysql的又有使用sqlserver,自己在使用sqlserver及mysql要实现某功能时,经常要在网上找来找去,所以 ...
- 本地数据库(SQL Server)远程连接服务器端服务器
本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...
- FineReport9.0定义数据连接(创建与SQL Server 2016数据库的连接)
1.下载并安装好FineReport9.0和SQL Server 2016 2.开始——>所有应用——>Microsoft SQL Server 2016——>SQL Server ...
- 在Windows Server 2008 R2 Server中,连接其他服务器的数据库遇到“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker ”
项目代码和数据库部署在不同的Windows Server 2008 R2 Server中,错误日志显示如下: "未启用当前数据库的 SQL Server Service Broker,因此查 ...
随机推荐
- java.sql.SQLException: ORA-28040: 没有匹配的验证协议
一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c时出现 java.sql.SQLException: ORA ...
- asp.net core之路由
在 ASP.NET Core 中,路由是一个非常重要的概念,它决定了如何将传入的请求映射到相应的处理程序.本文将详细介绍 ASP.NET Core 中的路由系统,包括路由的基本原理.路由模板.路由参数 ...
- React中setState的使用与同步异步
在react中,修改状态如果直接使用this.state,不会引起组件的重新渲染,需要通过 this.setState来对组件的属性进行修改. 1.this.setState的两种定义方式 定义初始状 ...
- 使用JDK自带工具调优JVM的常用命令
前言 对于Java进程常见问题,可以通过JVM监控工具(比如Prometheus).Arthas等,或者使用JDK自带的工具.如果第三方监控工具线上没有的话,对jdk自带的工具就要多熟悉熟悉. 线上J ...
- 产品代码都给你看了,可别再说不会DDD(二):DDD概念大白话
这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...
- 完美解决Content type ‘multipart/form-data;boundary=----------0467042;charset=UTF-8‘ not supported问题
一.前言 今天在做文件上传功能出现了该问题,该接口如下: @PostMapping("/upload") public Boolean upload(@RequestParam ...
- mall :rabbit项目源码解析
目录 一.mall开源项目 1.1 来源 1.2 项目转移 1.3 项目克隆 二.RabbitMQ 消息中间件 2.1 rabbit简介 2.2 分布式后端项目的使用流程 2.3 分布式后端项目的使用 ...
- 深入了解商品详情API接口的使用方法与数据获取
作为程序员,了解和熟悉如何调用API接口获取淘宝商品数据是非常重要的.在现今的电商环境中,准确.及时地获取商品详情信息对于开发者和商家来说至关重要.本文将以程序员的视角,详细介绍如何调用API接口 ...
- QA|linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号?|linux
linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号? 我的理解: 因为单引号不对会内容进行转义,而双引号会,举个栗子 1 a=1 2 echo "$a" ...
- 搭建Minio分布式服务
本文主要介绍Minio的分布式环境搭建,安装比较简单,因博主只有一台window,所以使用VM虚拟机搭建的. 搭建前可以先了解下minio: 1.官方文档:https://docs.min.io/cn ...