C++连接SqlServer数据库

码农公社  210.net.cn   210= 1024  10月24日一个重要的节日--码农(程序员)节

1.引入ADO
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

2.创建连接数据库类(两个指针及四个成员函数)

class CADOConn
{
public:
 CADOConn();
 virtual ~CADOConn();

 

 _ConnectionPtr m_pConnection; //对象智能指针连接操作数据库
 _RecordsetPtr m_pRecordPtr; //Recordset对象指针(记录集)

 

 //初始化连接数据库,执行查询,执行SQL语句,断开连接
 void OnInitDBConnect();
 _RecordsetPtr &GetRecordSet(_bstr_t bstrSQL);
 BOOL ExecuteSQL(_bstr_t bstrSQL);
 void ExitConnect();

 

};


3.四个成员函数实现



void CADOConn::OnInitDBConnect()

{

 ::CoInitialize(NULL); //初始化OLE/COM库环境

 try

 {

 //创建connection对象

       m_pConnection.CreateInstance("ADODB.Connection");  

    //设置连接字符串

    _bstr_t strConnect="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security 


Info=False;Initial Catalog=自己数据库填写处;Data Source=.";

    //SERVER和UID,PWD的设置根据实际情况来设置

    m_pConnection->Open(strConnect,"","",adModeUnknown);

 }

 catch(_com_error e)

 {

  AfxMessageBox(e.Description()); //显示错误信息

 }

}

 

_RecordsetPtr & CADOConn::GetRecordSet(_bstr_t bstrSQL)

{

 try

 {

  if(m_pConnection==NULL) //连接对象不存在

   OnInitDBConnect(); //重新连接

  m_pRecordPtr.CreateInstance(_uuidof(Recordset)); //创建记录集对象

  //执行查询,等到记录集

  m_pRecordPtr->Open(bstrSQL,m_pConnection.GetInterfacePtr


(),adOpenDynamic,adLockOptimistic,adCmdText);

 }

 catch(_com_error e) //捕捉异常

 {

  AfxMessageBox(e.Description()); //显示错误信息

 }

 return m_pRecordPtr; //返回记录集

}

 

 

BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

 try

 {

  if(m_pConnection==NULL)

   OnInitDBConnect();

  m_pConnection->Execute(bstrSQL,NULL,adCmdText);

  return true;

 }

 catch (_com_error e)

 {

  AfxMessageBox(e.Description());

  return false; 

 }

}

 

  

 

void CADOConn::ExitConnect()

{

 if(m_pConnection!=NULL)

 {

  m_pRecordPtr->Close();

  m_pConnection->Close();

 }

 ::CoUninitialize();

}


评论