日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

现在c++链接oracle,C++ 连接Oracle

發布時間:2025/4/16 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现在c++链接oracle,C++ 连接Oracle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎技術交流。 QQ:138986722

剛剛學習了C++、感覺學東西還是動手比較學得快一點!

下面是一個ADO方式連接Oracle的小程序部分代碼......

首先是Oracle的配置、在Oracle的安裝路徑下找到:Oracle\network\ADMIN\tnsnames.ora文件、配置一下連接配置

BOSS =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = boss)

)

)新建一個頭文件、名為CDBOperation.h:

#pragma once

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

class CDBOperation

{

public:

//初始化數據庫操作需要的對象

CDBOperation(void);

~CDBOperation(void);

//連接至數據庫

bool ConnToDB(char *ConnectionString, char *UserID, char *Password);

//數據庫操作函數

//查詢操作 刪除以及添加

_RecordsetPtr ExecuteWithResSQL(const char *);

private:

void PrintErrorInfo(_com_error &);

private:

//初始化數據庫連接、命令、記錄集

_ConnectionPtr CreateConnPtr();

_CommandPtr CreateCommPtr();

_RecordsetPtr CreateRecsetPtr();

private:

//數據庫連接需要的連接、命令操作對象

_ConnectionPtr m_pConnection;

_CommandPtr m_pCommand;

};新建一個c++源文件、名為CDBOperation.cpp:

#include "stdafx.h"

#include "DBOperation.h"

CDBOperation::CDBOperation(void)

{

CoInitialize(NULL);

m_pConnection = CreateConnPtr();

m_pCommand = CreateCommPtr();

}

CDBOperation::~CDBOperation(void)

{

m_pConnection->Close();

}

bool CDBOperation::ConnToDB(char *ConnectionString, char *UserID, char *Password)

{

if (NULL == m_pConnection)

{

printf("Failed to create connection\n");

return false;

}

try

{

HRESULT hr = m_pConnection->Open(ConnectionString, UserID, Password, NULL);

if (TRUE == FAILED(hr))

{

return false;

}

m_pCommand->ActiveConnection = m_pConnection;

return true;

}

catch(_com_error &e)

{

PrintErrorInfo(e);

return false;

}

}

_RecordsetPtr CDBOperation::ExecuteWithResSQL(const char *sql)

{

try

{

m_pCommand->CommandText = _bstr_t(sql);

_RecordsetPtr pRst = m_pCommand->Execute(NULL, NULL, adCmdText);

return pRst;

}

catch(_com_error &e)

{

PrintErrorInfo(e);

return NULL;

}

}

void CDBOperation::PrintErrorInfo(_com_error &e)

{

printf("Error infomation are as follows\n");

printf("ErrorNo: %d\nError Message:%s\nError Source:%s\nError Description:%s\n", e.Error(), e.ErrorMessage(), (LPCTSTR)e.Source(), (LPCTSTR)e.Description());

}

_ConnectionPtr CDBOperation::CreateConnPtr()

{

HRESULT hr;

_ConnectionPtr connPtr;

hr = connPtr.CreateInstance(__uuidof(Connection));

if (FAILED(hr) == TRUE)

{

return NULL;

}

return connPtr;

}

_CommandPtr CDBOperation::CreateCommPtr()

{

HRESULT hr;

_CommandPtr commPtr;

hr = commPtr.CreateInstance(__uuidof(Command));

if (FAILED(hr) == TRUE)

{

return NULL;

}

return commPtr;

}

_RecordsetPtr CDBOperation::CreateRecsetPtr()

{

HRESULT hr;

_RecordsetPtr recsetPtr;

hr = recsetPtr.CreateInstance(__uuidof(Command));

if (FAILED(hr) ==TRUE)

{

return NULL;

}

return recsetPtr;

}我的代碼是放在MFC一個按鈕Click事件里面的:

記住在處理事件的cpp文件中導入頭文件:#include "DBOperation.h"

CDBOperation dbOper;

bool bConn = dbOper.ConnToDB("Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=boss", "用戶名", "密碼");

if (false == bConn)

{

MessageBox((LPCTSTR)"連接數據庫出現錯誤\0",0,0);

return;

}

//查詢

_RecordsetPtr pRst;

char sql[255] = {0};

strcpy(sql, " select * from boss_test_table2 where rownum = 1 ");

pRst = dbOper.ExecuteWithResSQL(sql);

if (NULL == pRst)

{

MessageBox(_T("查詢數據出現錯誤!\0"),0,0);

return;

}

if (pRst->adoEOF)

{

pRst->Close();

MessageBox((LPCTSTR)"There is no records in this table\0",0,0);

return;

}

_variant_t vSno, vName;

while (!pRst->adoEOF)

{

//pRst->MoveFirst(); //記錄集指針移動到查詢結果集的前面

vSno = pRst->GetCollect(_variant_t("U_NUMBER"));

vName = pRst->GetCollect(_variant_t("USERS_NAME"));

MessageBox((LPCTSTR)(_bstr_t)vSno,0,0);

pRst->MoveNext();

}

strcpy(sql, "insert into boss_test_table2 (u_number, users_name, users_phone, status, customno_id) values ('0001', 'C+TTT+', '13999000000', 2, 'BPPPPPPPPPP')");

pRst = dbOper.ExecuteWithResSQL(sql);

if (NULL != pRst)

{

AfxMessageBox(_T("插入數據成功\n"));

}

//執行刪除語句

sprintf(sql, "delete boss_test_table2 where u_number = '%s'", "009");

pRst = dbOper.ExecuteWithResSQL(sql);

if (NULL != pRst)

{

MessageBox(_T("刪除數據成功\0"),0,0);

}

//執行更新語句

sprintf(sql, "update boss_test_table2 set users_name = '%s' ", "C++反人類、MFC反社會");

pRst = dbOper.ExecuteWithResSQL(sql);

if (NULL != pRst)

{

MessageBox(_T("更新數據成功\0"),0,0);

}

哎呀、又有工單了.......一個JS瀏覽器的兼容問題、有得搞了......o(︶︿︶)o 唉!!!

總結

以上是生活随笔為你收集整理的现在c++链接oracle,C++ 连接Oracle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区小视频 | 黄色片免费在线播放 | 一区二区视频免费看 | 国产91综合 | 国产精品久久久久一区二区 | 天天操穴 | 亚洲一区高清 | 91成人免费在线视频 | 久草手机在线观看 | 久久精品免费一区二区 | 日本高清一区二区视频 | 精品人妻一区二区免费 | 国产又好看的毛片 | 亚洲精品乱码久久久久久写真 | 亚洲精品国产精品乱码 | 疯狂伦交 | 欧美性极品少妇xxxx | 超碰97在线免费 | 91精品视频网站 | 91玉足脚交白嫩脚丫 | www.成人在线视频 | 日本视频h| 日本十大三级艳星 | 亚洲永久免费av | 超碰成人久久 | 成年人激情网站 | 国产精品自拍小视频 | 91资源在线视频 | 秋霞国产| 永久国产 | 狠狠干2020 | 久久久久久久久久久久久久国产 | 一区三区视频在线观看 | 人妻奶水人妻系列 | 亚洲精品视频免费看 | 欧美性免费 | 四虎永久地址 | 日本一区视频 | 红桃视频隐藏入口 | 天天干影院 | 97超碰在线免费观看 | 中文字幕丰满孑伦无码专区 | 国产精品www色诱视频 | 国产欧美日韩综合 | 正在播放av | 污网站在线免费 | 亚洲精品视频在线观看免费视频 | 久久成人国产精品 | 一区二区三区四区五区在线视频 | 黄色www | 不卡影院一区二区 | 日韩精品免费一区二区在线观看 | 一级美女黄色片 | 99热免费在线观看 | 国产精品亚洲欧美 | 337p粉嫩大胆色噜噜噜 | 天堂av影院 | 91日日夜夜 | 日韩免费视频一区 | 国产白丝一区二区三区 | 九九热视频在线播放 | 天堂网av在线 | 国产精选毛片 | 美女裸体跪姿扒开屁股无内裤 | 人人爱人人 | 91在线精品播放 | 国产日韩欧美精品一区二区 | 亚洲a人| 亚洲三级在线 | 日韩高清在线观看一区 | 成人a级大片 | 亚洲视频一二三 | 日老女人视频 | 国产视频成人 | 日本视频一区二区三区 | 自拍偷拍另类 | 尹人综合在线 | free女性xx性老大太 | 成 年 人 黄 色 大 片大 全 | a√天堂网 | 哺乳期av| 欧美黄色影院 | 中国一级片黄色一级片黄 | 500部大龄熟乱视频 亚洲乱码精品 | 精品国产自在精品国产精小说 | av资源库| 日日夜夜狠| 亚洲国产精品久久久久久 | 免费看国产精品 | 伊人免费 | 久久久久这里只有精品 | 激情麻豆| 正在播放adn156松下纱荣子 | 五月天久久综合 | 久久久国产片 | av第一福利 | 欧美日韩xxxx| 欧美日韩亚洲国产另类 | 人物动物互动39集免费观看 |