C++通过ADO操作Sql Server数据库的代码演示
2018-07-20 来源:open-open
C++通过ADO操作Sql Server数据库的代码演示
class SQLService { public: SQLService(string procName); ~SQLService(void); void AddPara(string paraName,_variant_t val); void AddParaOut(string paraName,_variant_t& val); void Insert(); void Delete(); void Update(); void RefreshCmdPara(); _RecordsetPtr& Query(); void ModifyPro(string& newProName); private: void ExitConnect(); void OnInitADOConn(); bool ExecuteProc(); private: _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; _CommandPtr m_pCmd; string m_ProcName; }; #include "StdAfx.h" #include "SQLService.h" #import "c:program filescommon filessystemadomsado15.dll" no_namespace, rename("EOF", "adoEOF") SQLService::SQLService(string procName) { m_pCmd=NULL; m_pConnection=NULL; m_pRecordset=NULL; m_ProcName=procName; } SQLService::~SQLService(void) { ExitConnect(); } void SQLService::OnInitADOConn() { ::CoInitialize(NULL); HRESULT hr; try { hr=m_pConnection.CreateInstance("ADODB.Connection");// if(SUCCEEDED(hr)) { _bstr_t strConnect="Provider=SQLOLEDB;Server=.;Database=SURF;UID=sa;PWD=123;"; m_pConnection->Open(strConnect,"","",adModeUnknown); m_pConnection->CursorLocation=adUseClient; } } catch(_com_error& e) { MessageBox(NULL,(LPCWSTR)e.Description(),_T("打开数据库失败"),MB_OK); m_pConnection->Close(); m_pConnection.Release(); m_pConnection=NULL; return ; } try { hr=m_pRecordset.CreateInstance("ADODB.Recordset"); if(SUCCEEDED(hr)) { m_pRecordset->CursorType=adOpenKeyset; m_pRecordset->LockType=adLockOptimistic; m_pRecordset->PutActiveConnection(m_pConnection.GetInterfacePtr()); } } catch(_com_error& e) { MessageBox(NULL,(LPCWSTR)e.Description(),_T("记录集创建失败"),MB_OK); m_pConnection->Close(); m_pRecordset->Close(); m_pConnection.Release(); m_pRecordset.Release(); m_pConnection=NULL; m_pRecordset=NULL; return ; } try { hr=m_pCmd.CreateInstance(_uuidof(Command)); if(SUCCEEDED(hr)) { m_pCmd->ActiveConnection=m_pConnection; m_pCmd->CommandType=adCmdStoredProc; m_pCmd->CommandText=_bstr_t(m_ProcName.c_str()); } } catch(_com_error& e) { MessageBox(NULL,(LPCWSTR)e.Description(),_T("命令创建失败"),MB_OK); m_pConnection->Close(); m_pRecordset->Close(); m_pConnection->Release(); m_pRecordset->Release(); m_pCmd.Release(); m_pConnection=NULL; m_pRecordset=NULL; m_pCmd=NULL; return ; } } bool SQLService::ExecuteProc()//执行增删改操作 { if(m_pConnection==NULL) OnInitADOConn(); if(m_pCmd!=NULL) { m_pCmd->Execute(NULL,NULL,adCmdStoredProc); } return true; } void SQLService::Insert()//执行增 操作 { ExecuteProc(); } void SQLService::Delete()//执行 删 操作 { ExecuteProc(); } void SQLService::Update()//执行 改 操作 { ExecuteProc(); } _RecordsetPtr& SQLService::Query() { if(m_pConnection==NULL) OnInitADOConn(); if(m_pCmd!=NULL) { m_pRecordset=m_pCmd->Execute(NULL,NULL,adCmdStoredProc); } return m_pRecordset; } void SQLService::RefreshCmdPara() { if(m_pCmd!=NULL) { m_pCmd.Release(); m_pCmd=NULL; } try { HRESULT hr=m_pCmd.CreateInstance(_uuidof(Command)); if(SUCCEEDED(hr)) { m_pCmd->ActiveConnection=m_pConnection; m_pCmd->CommandType=adCmdStoredProc; m_pCmd->CommandText=_bstr_t(m_ProcName.c_str()); } } catch(_com_error& e) { MessageBox(NULL,(LPCWSTR)e.Description(),_T("命令创建失败"),MB_OK); m_pConnection->Close(); m_pRecordset->Close(); m_pConnection->Release(); m_pRecordset->Release(); m_pCmd.Release(); m_pConnection=NULL; m_pRecordset=NULL; m_pCmd=NULL; return ; } } void SQLService::ExitConnect() { if(m_pRecordset!=NULL&&m_pRecordset->State) { m_pRecordset->Close(); m_pRecordset.Release(); m_pRecordset=NULL; } if(m_pConnection!=NULL&&m_pConnection->State) { m_pConnection->Close(); m_pConnection.Release(); m_pConnection=NULL; } if(m_pCmd!=NULL) { m_pCmd.Release(); m_pCmd=NULL; } ::CoUninitialize(); } void SQLService::AddPara(string paraName,_variant_t val) { if(m_pConnection==NULL) OnInitADOConn(); if(m_pCmd!=NULL) { _ParameterPtr pPara=m_pCmd->CreateParameter(_bstr_t(paraName.c_str()),adBSTR,adParamInput,255,val); m_pCmd->Parameters->Append(pPara); } } void SQLService::AddParaOut(string paraName,_variant_t& val) { if(m_pConnection==NULL) OnInitADOConn(); if(m_pCmd!=NULL) { _ParameterPtr pPara=m_pCmd->CreateParameter(_bstr_t(paraName.c_str()),adBSTR,adParamOutput,255,val); m_pCmd->Parameters->Append(pPara); } } void SQLService::ModifyPro(string& newProName) { m_ProcName=newProName; m_pCmd->CommandText=_bstr_t(m_ProcName.c_str()); }
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:JAVA生成解析二维码
下一篇:C++算法之A*算法
最新资讯
热门推荐