| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
kdloeki
10年前发布

C++通过ADO操作Sql Server数据库的代码演示

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());  }