实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLi ...

宁睿  金牌会员 | 2024-1-5 00:05:38 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 959|帖子 959|积分 2887

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

  • 连接 SQL Server 数据库
要使用 C++ 连接 SQL Server 数据库,可以使用 Microsoft 的 ADODB 库。以下是一个示例代码:
  1. #include <iostream>
  2. #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")
  3. int main() {
  4.     CoInitialize(NULL); // 初始化 COM 库
  5.     _ConnectionPtr pConnection("ADODB.Connection"); // 创建 Connection 对象
  6.     _bstr_t strConnect = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;User ID=sa;Password=123456"; // 连接字符串
  7.     pConnection->Open(strConnect, NULL, NULL, NULL); // 连接数据库
  8.     if (pConnection->State) {
  9.         _CommandPtr pCommand("ADODB.Command"); // 创建 Command 对象
  10.         _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查询语句
  11.         pCommand->ActiveConnection = pConnection; // 设置连接对象
  12.         pCommand->CommandText = strSQL; // 设置 SQL 语句
  13.         _RecordsetPtr pRecordset("ADODB.Recordset"); // 创建 Recordset 对象
  14.         pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 执行查询并返回结果集
  15.         while (!pRecordset->EndOfFile) { // 遍历结果集
  16.             // 处理数据
  17.         }
  18.     }
  19.     pConnection->Close(); // 关闭连接
  20.     CoUninitialize(); // 关闭 COM 库
  21.     return 0;
  22. }
复制代码

  • 连接 MySQL 数据库
要使用 C++ 连接 MySQL 数据库,可以使用 MySQL Connector/C++ 库。以下是一个示例代码:
  1. #include <mysql_driver.h>
  2. #include <mysql_connection.h>
  3. #include <cppconn/driver.h>
  4. #include <cppconn/exception.h>
  5. #include <cppconn/resultset.h>
  6. #include <cppconn/statement.h>
  7. int main() {
  8.     sql::mysql::MySQL_Driver *driver;
  9.     sql::Connection *con;
  10.     sql::Statement *stmt;
  11.     sql::ResultSet *res;
  12.     driver = sql::mysql::get_mysql_driver_instance(); // 获取 MySQL 驱动程序实例
  13.     con = driver->connect("tcp://localhost:3306", "user", "password"); // 连接数据库
  14.     stmt = con->createStatement(); // 创建 Statement 对象
  15.     res = stmt->executeQuery("SELECT * FROM MyTable"); // 执行查询并返回结果集
  16.     while (res->next()) { // 遍历结果集
  17.         // 处理数据
  18.     }
  19.     delete res; // 删除结果集对象
  20.     delete stmt; // 删除 Statement 对象
  21.     delete con; // 删除连接对象
  22.     return 0;
  23. }
复制代码

  • 连接 Oracle 数据库
要使用 C++ 连接 Oracle 数据库,可以使用 Oracle 提供的 ODBC 驱动程序。以下是一个示例代码:
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <occi.h>
  4. using namespace oracle::occi;
  5. int main() {
  6.     Environment *env = Environment::createEnvironment(); // 创建 OCCI 环境
  7.     Connection *conn = env->createConnection("DRIVER={Oracle ODBC Driver};SERVER=localhost;DATABASE=MyDatabase;UID=user;PWD=password"); // 连接数据库
  8.     if (conn->isValid()) {
  9.         Statement *stmt = conn->createStatement("SELECT * FROM MyTable"); // 创建 Statement 对象
  10.         ResultSet *res = stmt->executeQuery(); // 执行查询并返回结果集
  11.         while (res->next()) { // 遍历结果集
  12.             // 处理数据
  13.         }
  14.     }
  15.     conn->close(); // 关闭连接
  16.     env->terminate(); // 关闭 OCCI 环境
  17.     return 0;
  18. }
复制代码

  • 连接 Access 数据库
要使用 C++ 连接 Access 数据库,可以使用 Microsoft 的 ADODB 库。以下是一个示例代码:
  1. #include <iostream>
  2. #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")
  3. int main() {
  4.     CoInitialize(NULL); // 初始化 COM 库
  5.     _ConnectionPtr pConnection("ADODB.Connection"); // 创建 Connection 对象
  6.     _bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyDatabase.mdb;Persist Security Info=False"; // 连接字符串
  7.     pConnection->Open(strConnect, "", "", adConnectUnspecified); // 连接数据库
  8.     if (pConnection->State) {
  9.         _CommandPtr pCommand("ADODB.Command"); // 创建 Command 对象
  10.         _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查询语句
  11.         pCommand->ActiveConnection = pConnection; // 设置连接对象
  12.         pCommand->CommandText = strSQL; // 设置 SQL 语句
  13.         _RecordsetPtr pRecordset("ADODB.Recordset"); // 创建 Recordset 对象
  14.         pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 执行查询并返回结果集
  15.         while (!pRecordset->EndOfFile) { // 遍历结果集
  16.             // 处理数据
  17.         }
  18.     }
  19.     pConnection->Close(); // 关闭连接
  20.     CoUninitialize(); // 关闭 COM 库
  21.     return 0;
  22. }
复制代码

  • 连接 SQLite 数据库
要使用 C++ 连接 SQLite 数据库,可以使用SQLite C++库。以下是一个示例代码:
  1. #include <iostream>
  2. #include <sqlite3.h>
  3. #include <cassert>
  4. int main() {
  5.     sqlite3* db;
  6.     int rc;
  7.     std::string sql;
  8.     // 打开数据库
  9.     rc = sqlite3_open("MyDatabase.db", &db);
  10.     assert(rc == SQLITE_OK);
  11.     // 创建表格
  12.     sql = "CREATE TABLE IF NOT EXISTS MyTable(id INTEGER PRIMARY KEY, name TEXT);";
  13.     rc = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
  14.     assert(rc == SQLITE_OK);
  15.     // 插入数据
  16.     sql = "INSERT INTO MyTable(name) VALUES('hello');";
  17.     rc = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
  18.     assert(rc == SQLITE_OK);
  19.     // 查询数据
  20.     sql = "SELECT * FROM MyTable;";
  21.     rc = sqlite3_exec(db, sql.c_str(), callback, 0, 0);
  22.     assert(rc == SQLITE_OK);
  23.     // 关闭数据库
  24.     sqlite3_close(db);
  25.     return 0;
  26. }
复制代码

  • 连接 PostgreSQL 数据库
要使用 C++ 连接 PostgreSQL 数据库,可以使用 PostgreSQL C++ 驱动程序。以下是一个示例代码:
[code]#include #include #include void callback(void* arg, int argc, char** argv, char** cols) {    for (int i = 0; i < argc; i++) {        std::cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表