VC+ADO下连接并操作sql2005数据库方法总结

最近在用VC ado连接SQL2005做开发,在网上也参考了好多资料,自己研究了几天,最后把使用方法思路整理下:
  在需要使用的地方按如下框架使用:
0. 定义一个CAdoConn 类全局对象, 例如:在CTestDialogI添加一个公有的成员变量 CAdoConn m_adoconn;
1. 调用初始化OLE/COM库环境并连接数据库, 如: a_adoconn.OnInitADOConn(); 
2. 定义SQL查询字串,如: _bstr_t  strSQL = "Select * from test";
3. 定义一个_RecordsetPtr类对象接收GetRecordSet(_bstr_t bstrSQL)返回的记录集,
  如: _RecordsetPtr m_pAddset=GetRecordSet(_bstr_t bstrSQL);
4. 通过m_pAddset 调用相关方法(MoveFirst,MoveNext,MovePrevious,MoveLast,AddNew,GetCollect,PutCollect等等)
  进行一系列相关操作
5. 关闭连接, m_adoconn.ExitConnect();
 
  相信大家一定有同感,网上vc下ADO连接sql2005的资料是比较少的,而且思路并不是很清晰,没用过的同鞋照上面的思路走一定没有问题,而且直接用下面给出的类就能用!

  经过几天的摸索,以后可以轻松的使用ado连接sql数据库了!嘿嘿 ,希望你也能和我一样能顺利使用!
  有问题可以留言,我一定尽量解答:

    添加新类的过程就不说了:
 
下面是头文件跟.CPP实现文件。 
头文件:
#import "c:Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CAdoConn  
{
public:
 
 //定义变量
 _ConnectionPtr m_pConnection; //定义连接对象
 _RecordsetPtr m_pRecordset; //定义记录集对象
 _CommandPtr m_pCommand;   // 定义命令集对象
 CAdoConn();
 virtual ~CAdoConn();
 //初始化连接数据库
 void OnInitADOConn();
 //执行查询
 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
 //执行SQL语句,Inset Update _variant_t
 BOOL ExecuteSQL(_bstr_t bstrSQL);
 void ExitConnect();

};

.cpp文件如下,即类中几个方法的实现:
CAdoConn::CAdoConn()
{
 
}
CAdoConn::~CAdoConn()
{
}
 
//初始化OLE/COM库环境并连接数据库
void CAdoConn::OnInitADOConn()

{
 ::CoInitialize(NULL);
 try
 { 
   // 创建Connection对象实例
  m_pConnection.CreateInstance(__uuidof(Connection));// __uuidof(Connection) 可以换成"ADODB.Connection"
  _bstr_t strConnect="Driver={SQL Server};Server=PC2011092510DPA;Database=db_student";
  m_pConnection->Open(strConnect,"","",adModeUnknown);  //建立连接
 }
 catch (_com_error e)
 {
    // 显示错误信息 
  MessageBox(NULL,e.Description(),"错误提示",0); 
 }
}
_RecordsetPtr& CAdoConn::GetRecordSet(_bstr_t  bstrSQL)
{
 try 
 { 
  // 连接数据库,如果Connection对象为空,则重新连接数据库 
  if(m_pConnection==NULL) 
   OnInitADOConn(); 
  // 创建记录集对象 
  m_pRecordset.CreateInstance(__uuidof(Recordset)); //__uuidof(Recordset) 可以换成"ADODB.Recordset"
  // 取得表中的记录 
  m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); 
 } 
 // 捕捉异常 
 catch(_com_error e) 
 { 
  // 显示错误信息 
  MessageBox(NULL,e.Description(),"错误提示",0); 
 } 
 // 返回记录集 
 return m_pRecordset; 

// 执行SQL语句,Insert Update _variant_t ,操作数据库
BOOL CAdoConn::ExecuteSQL(_bstr_t bstrSQL) 


 // _variant_t RecordsAffected; 
 try 
 {
  // 是否已经连接数据库 
  if(m_pConnection == NULL) 
   OnInitADOConn(); 
  // Connection对象的Execute方法:(_bstr_t CommandText, 
  // VARIANT * RecordsAffected, long Options ) 
  // 其中CommandText是命令字串,通常是SQL命令。 
  // 参数RecordsAffected是操作完成后所影响的行数, 
  // 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 
  // adCmdProc-存储过程;adCmdUnknown-未知 
  m_pConnection->Execute(bstrSQL,NULL,adCmdText); 
  return true; 
 } 
 catch(_com_error e) 
 { 
  MessageBox(NULL,e.Description(),"错误提示",0); 
  return false; 
 } 
}

//关闭连接
void CAdoConn::ExitConnect() 

 try
 {
  // 关闭记录集和连接 
  if (m_pRecordset != NULL) 
   m_pRecordset->Close(); 
   m_pRecordset=NULL; 
  if (m_pConnection != NULL)
  { 
   m_pConnection->Close(); 
   m_pConnection=NULL; 
  }
 }
 catch (_com_error e)
 {
  MessageBox(NULL,e.Description(),"错误提示",0); 
  return ; 
 }
 // 释放环境 
 ::CoUninitialize(); 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值