最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++連接數(shù)據(jù)庫SqlServer、MySql、Oracle、Access、SQLite、PostgreSQL、MongoDB、Redis

 更新時(shí)間:2024年08月10日 16:19:33   投稿:yin  
C++是一種通用的編程語言,可以使用不同的庫和驅(qū)動程序來連接各種數(shù)據(jù)庫,以下是一些示例代碼,演示如何使用?C++?連接?SQL?Server、MySQL、Oracle、ACCESS、SQLite?、?PostgreSQL、MongoDB、Redis數(shù)據(jù)庫

C++是一種通用的編程語言,可以使用不同的庫和驅(qū)動程序來連接各種數(shù)據(jù)庫。以下是一些示例代碼,演示如何使用 C++ 連接 SQL Server、MySQL、Oracle、ACCESS、SQLite 、 PostgreSQL、MongoDB、Redis數(shù)據(jù)庫。

連接 SQL Server 數(shù)據(jù)庫

要使用 C++ 連接 SQL Server 數(shù)據(jù)庫,可以使用 Microsoft 的 ADODB 庫。以下是一個(gè)示例代碼:

#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"); // 創(chuàng)建 Connection 對象
    _bstr_t strConnect = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;User ID=sa;Password=123456"; // 連接字符串
    pConnection->Open(strConnect, NULL, NULL, NULL); // 連接數(shù)據(jù)庫

    if (pConnection->State) {
        _CommandPtr pCommand("ADODB.Command"); // 創(chuàng)建 Command 對象
        _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查詢語句
        pCommand->ActiveConnection = pConnection; // 設(shè)置連接對象
        pCommand->CommandText = strSQL; // 設(shè)置 SQL 語句
        _RecordsetPtr pRecordset("ADODB.Recordset"); // 創(chuàng)建 Recordset 對象
        pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 執(zhí)行查詢并返回結(jié)果集

        while (!pRecordset->EndOfFile) { // 遍歷結(jié)果集
            // 處理數(shù)據(jù)
        }
    }

    pConnection->Close(); // 關(guān)閉連接
    CoUninitialize(); // 關(guān)閉 COM 庫
    return 0;
}

連接 MySQL 數(shù)據(jù)庫

要使用 C++ 連接 MySQL 數(shù)據(jù)庫,可以使用 MySQL Connector/C++ 庫。以下是一個(gè)示例代碼:

#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 驅(qū)動程序?qū)嵗?
    con = driver->connect("tcp://localhost:3306", "user", "password"); // 連接數(shù)據(jù)庫
    stmt = con->createStatement(); // 創(chuàng)建 Statement 對象
    res = stmt->executeQuery("SELECT * FROM MyTable"); // 執(zhí)行查詢并返回結(jié)果集

    while (res->next()) { // 遍歷結(jié)果集
        // 處理數(shù)據(jù)
    }

    delete res; // 刪除結(jié)果集對象
    delete stmt; // 刪除 Statement 對象
    delete con; // 刪除連接對象
    return 0;
}

連接 Oracle 數(shù)據(jù)庫

要使用 C++ 連接 Oracle 數(shù)據(jù)庫,可以使用 Oracle 提供的 ODBC 驅(qū)動程序。以下是一個(gè)示例代碼:

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

using namespace oracle::occi;

int main() {
    Environment *env = Environment::createEnvironment(); // 創(chuàng)建 OCCI 環(huán)境
    Connection *conn = env->createConnection("DRIVER={Oracle ODBC Driver};SERVER=localhost;DATABASE=MyDatabase;UID=user;PWD=password"); // 連接數(shù)據(jù)庫

    if (conn->isValid()) {
        Statement *stmt = conn->createStatement("SELECT * FROM MyTable"); // 創(chuàng)建 Statement 對象
        ResultSet *res = stmt->executeQuery(); // 執(zhí)行查詢并返回結(jié)果集

        while (res->next()) { // 遍歷結(jié)果集
            // 處理數(shù)據(jù)
        }
    }

    conn->close(); // 關(guān)閉連接
    env->terminate(); // 關(guān)閉 OCCI 環(huán)境
    return 0;
}

連接 Access 數(shù)據(jù)庫

要使用 C++ 連接 Access 數(shù)據(jù)庫,可以使用 Microsoft 的 ADODB 庫。以下是一個(gè)示例代碼:

#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"); // 創(chuàng)建 Connection 對象
    _bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyDatabase.mdb;Persist Security Info=False"; // 連接字符串
    pConnection->Open(strConnect, "", "", adConnectUnspecified); // 連接數(shù)據(jù)庫

    if (pConnection->State) {
        _CommandPtr pCommand("ADODB.Command"); // 創(chuàng)建 Command 對象
        _bstr_t strSQL = "SELECT * FROM MyTable"; // SQL 查詢語句
        pCommand->ActiveConnection = pConnection; // 設(shè)置連接對象
        pCommand->CommandText = strSQL; // 設(shè)置 SQL 語句
        _RecordsetPtr pRecordset("ADODB.Recordset"); // 創(chuàng)建 Recordset 對象
        pRecordset->Open(pCommand.GetInterfacePtr(), _variant_t((IDispatch *) pConnection, true), adOpenUnspecified, adLockUnspecified, -1); // 執(zhí)行查詢并返回結(jié)果集

        while (!pRecordset->EndOfFile) { // 遍歷結(jié)果集
            // 處理數(shù)據(jù)
        }
    }

    pConnection->Close(); // 關(guān)閉連接
    CoUninitialize(); // 關(guān)閉 COM 庫
    return 0;
}

連接 SQLite 數(shù)據(jù)庫

要使用 C++ 連接 SQLite 數(shù)據(jù)庫,可以使用SQLite C++庫。以下是一個(gè)示例代碼:

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

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

    // 打開數(shù)據(jù)庫
    rc = sqlite3_open("MyDatabase.db", &db);
    assert(rc == SQLITE_OK);

    // 創(chuàng)建表格
    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);

    // 插入數(shù)據(jù)
    sql = "INSERT INTO MyTable(name) VALUES('hello');";
    rc = sqlite3_exec(db, sql.c_str(), NULL, NULL, NULL);
    assert(rc == SQLITE_OK);

    // 查詢數(shù)據(jù)
    sql = "SELECT * FROM MyTable;";
    rc = sqlite3_exec(db, sql.c_str(), callback, 0, 0);
    assert(rc == SQLITE_OK);

    // 關(guān)閉數(shù)據(jù)庫
    sqlite3_close(db);
    return 0;
}

連接 PostgreSQL 數(shù)據(jù)庫

要使用 C++ 連接 PostgreSQL 數(shù)據(jù)庫,可以使用 PostgreSQL C++ 驅(qū)動程序。以下是一個(gè)示例代碼:

#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);

    // 執(zhí)行查詢
    PGresult* res = PQexec(conn, "SELECT * FROM MyTable");
    assert(PQresultStatus(res) == PGRES_TUPLES_OK);

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

    // 關(guān)閉連接
    PQfinish(conn);
    return 0;
}

連接MongoDB數(shù)據(jù)庫

#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"}};

    // 連接到數(shù)據(jù)庫
    mongocxx::database db = conn["MyDatabase"];

    // 創(chuàng)建文檔
    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;
}

這個(gè)示例使用了MongoDB C++驅(qū)動程序來連接到MongoDB數(shù)據(jù)庫,創(chuàng)建文檔并將其插入到集合中,然后查詢并打印文檔的內(nèi)容。

連接Redis數(shù)據(jù)庫

#include "stdafx.h"
#include <Windows.h>
#include <hiredis.h>

#pragma comment(lib, "Win32_Interop.lib")
#pragma comment(lib, "hiredis.lib")

int main()
{
    //redis默認(rèn)監(jiān)聽端口為6387 可以再配置文件中修改 
    redisContext* pRedisContext = redisConnect("127.0.0.1", 6379);
    if (NULL == pRedisContext || pRedisContext->err)
    {
        printf("%s \r\n", pRedisContext->errstr);
        printf("Connect to redis server failed \n");
        return -1;
    }

    //輸入Redis密碼
    const char *pszRedisPwd = "123456";
    redisReply *pRedisReply = (redisReply*)redisCommand(pRedisContext, "AUTH %s", pszRedisPwd);
    if (NULL != pRedisReply)
    {
        freeReplyObject(pRedisReply);
    }
    //用get命令獲取數(shù)據(jù)
    char szRedisBuff[256] = { 0 };
    sprintf_s(szRedisBuff, "GET %s", "name");
    pRedisReply = (redisReply*)redisCommand(pRedisContext, szRedisBuff);
    if (NULL == pRedisReply)
    {
        printf("Get data Error!");
        return -1;
    }

    if (NULL == pRedisReply->str)
    {
        freeReplyObject(pRedisReply);
        return -1;
    }

    string strRes(pRedisReply->str);
    freeReplyObject(pRedisReply);

    //向Redis寫入數(shù)據(jù)
    pRedisReply = (redisReply *)redisCommand(pRedisContext, "SET keyName huantest");
    if (NULL != pRedisReply)
    {
        freeReplyObject(pRedisReply);
    }

    return 0;
}

總結(jié)

到此這篇關(guān)于C++連接數(shù)據(jù)庫SqlServer、MySql、Oracle、Access、SQLite、PostgreSQL、MongoDB、Redis的文章就介紹到這了,更多相關(guān)C++連接8種數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言指針入門學(xué)習(xí)面面觀

    C語言指針入門學(xué)習(xí)面面觀

    這篇文章主要介紹了C語言指針的一些基礎(chǔ)知識,指針可以說是C語言入門學(xué)習(xí)中的頭等大事,文中從數(shù)組和函數(shù)等多方面剖析C中指針的作用,需要的朋友可以參考下
    2016-02-02
  • C/C++項(xiàng)目編譯工具簡單介紹

    C/C++項(xiàng)目編譯工具簡單介紹

    我們給大家?guī)砹艘黄P(guān)于C/C++項(xiàng)目編譯工具簡單介紹的文章,大家在項(xiàng)目編譯前可以先閱讀下。
    2019-12-12
  • 基于C語言編寫簡易的英文統(tǒng)計(jì)和加密系統(tǒng)

    基于C語言編寫簡易的英文統(tǒng)計(jì)和加密系統(tǒng)

    這篇文章主要介紹如何基于C語言編寫一個(gè)簡易的英文統(tǒng)計(jì)和加密系統(tǒng),實(shí)際上就是對字符數(shù)組的基本操作的各種使用,感興趣的可以了解一下
    2023-05-05
  • C 語言基礎(chǔ)之C語言的常見關(guān)鍵字

    C 語言基礎(chǔ)之C語言的常見關(guān)鍵字

    C語言中有一些預(yù)先定義的字符串,他們本身被賦予了自身的功能。并且我們在定義變量的時(shí)候,不能去搶他們的名字來用。他們就是今天的主角:關(guān)鍵字,下面文章將給大家做詳細(xì)介紹
    2021-09-09
  • C語言指針引用數(shù)組案例講解

    C語言指針引用數(shù)組案例講解

    這篇文章主要介紹了C語言指針引用數(shù)組案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++有符號和無符號整數(shù)的位移操作過程

    C++有符號和無符號整數(shù)的位移操作過程

    C++中位移操作對有符號與無符號整數(shù)處理不同:無符號左移補(bǔ)0,右移也補(bǔ)0;有符號右移補(bǔ)符號位(算術(shù)移位),左移可能觸發(fā)未定義行為,需注意類型轉(zhuǎn)換與跨平臺兼容性
    2025-09-09
  • C++實(shí)現(xiàn)Dijkstra算法的示例代碼

    C++實(shí)現(xiàn)Dijkstra算法的示例代碼

    迪杰斯特拉算法(Dijkstra)是由荷蘭計(jì)算機(jī)科學(xué)家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是從一個(gè)頂點(diǎn)到其余各頂點(diǎn)的最短路徑算法。本文將用C++實(shí)現(xiàn)Dijkstra算法,需要的可以參考一下
    2022-07-07
  • C++實(shí)現(xiàn)字符串類型相互轉(zhuǎn)換的代碼示例

    C++實(shí)現(xiàn)字符串類型相互轉(zhuǎn)換的代碼示例

    在C/C++編程中,字符串是非常基礎(chǔ)且常用的數(shù)據(jù)類型,但是由于不同的編程語言或標(biāo)準(zhǔn)庫可能采用不同的字符串類型,因此在不同的應(yīng)用場景下可能需要進(jìn)行字符串類型的相互轉(zhuǎn)換,本文將介紹如何在C/C++中將char*,std::string,QString,CString/MFC?String相互轉(zhuǎn)換
    2023-06-06
  • C++ 將一個(gè)文件讀入數(shù)組再讀出數(shù)組的方法

    C++ 將一個(gè)文件讀入數(shù)組再讀出數(shù)組的方法

    今天小編就為大家分享一篇C++ 將一個(gè)文件讀入數(shù)組再讀出數(shù)組的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C/C++字符串查找函數(shù)全面了解

    C/C++字符串查找函數(shù)全面了解

    下面小編就為大家?guī)硪黄狢/C++字符串查找函數(shù)全面了解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

乌兰察布市| 乌什县| 婺源县| 乐昌市| 宜兴市| 丰顺县| 皮山县| 博客| 水富县| 左权县| 柳林县| 邹平县| 河源市| 建宁县| 晋江市| 蒙城县| 穆棱市| 收藏| 鹿泉市| 玉龙| 商南县| 古浪县| 永德县| 高密市| 哈密市| 江津市| 竹溪县| 清水河县| 延安市| 红原县| 抚宁县| 逊克县| 祁门县| 堆龙德庆县| 兰溪市| 加查县| 顺平县| 抚顺县| 庆安县| 侯马市| 武汉市|