在VC中使用ADO的开发步骤(名字空间)

博客介绍了使用ADO库的基本操作。首先初始化COM环境,接着详细展示了使用ADO库的三个基本接口,包括Connection对象连接本地Access库和SQL Server,Recordset对象执行查询语句,Command对象调用存储过程,还给出了相应的代码示例及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在VC中使用ADO的开发步骤(名字空间):
1,引入ADO库文件
 在工程的stdafx.h里用#import引入ADO库文件。
 这时往往就不是在stdafx.h里用#import引入ADO库文件了,而是在你要使用ADO访问方式的工程类的.h中引入了。
 #import "C:/Program Files/Common Files/System/ado/msado15.dll"  rename_namespace("ARXADO")  rename("BOF","adoBOF")

rename("EOF","adoEOF")
2, 初始化COM环境
 和上面一样。
3,使用ADO库的三个基本接口
Connection对象:
 ARXADO::_ConnectionPtr m_pConnection;
 m_pConnection.CreateInstance(__uuidof(ARXADO::Connection));
 try{ 
  // 打开本地Access库ChatLog.mdb
  m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ChatLog.mdb","","",ARXADO::adModeUnknown);
  //SQL Server连接方法
  _bstr_t strConnect = "Provider=SQLOLEDB; Server=billgates;Database=HrMan; uid=sa; pwd=sa;";
  m_pConnection->Open(strConnect,"","",ARXADO::adModeUnknown);
 }
 catch(_com_error e){
  AfxMessageBox(e.Description());
 }
Recordset对象:
 ARXADO::_RecordsetPtr m_pRecordset;
 m_pRecordset.CreateInstance(__uuidof(ARXADO::Recordset));
 CString sql;
 sql.Format("SELECT DISTINCT name FROM table1");
 try{
  m_pRecordset->Open(sql.GetBuffer(sql.GetLength()),
                        _variant_t((IDispatch *)m_pConnection,true),
   ARXADO::adOpenDynamic,
   ARXADO::adLockOptimistic,
   ARXADO::adCmdText);
 }
 catch(_com_error *e){
  AfxMessageBox(e->ErrorMessage());
 }
 CString strName;
 while (!m_pRecordset->adoEOF) {
  strName.Format("%s",(char*)(_bstr_t)m_pRecordset->Fields->GetItem(_variant_t("Name"))->Value);
  m_listbox.AddString(strName);
  m_pRecordset->MoveNext();
 }
Command对象:
 ARXADO::_CommandPtr m_pCommand;
    HRESULT hr = m_pCommand.CreateInstance(__uuidof(ARXADO::Command));
 if(FAILED(hr))
 {   
  AfxMessageBox("创建Command对象实例失败!");
 }
 CString  strP_mailid;
 ARXADO::_ParameterPtr param;
     param=m_pCommand->CreateParameter("p_mailid",adVarChar,adParamOutput,strP_mailid.GetLength()+1,_variant_t(strP_mailid));
 m_pCommand->Parameters->Append(param);

 m_pCommand->ActiveConnection = m_pConnection;
 m_pCommand->CommandType = ARXADO::adCmdStoredProc; 
 m_pCommand->CommandText = _bstr_t("P_MAIL_SEND");
 try{
  cmd->Execute(NULL,NULL,ARXADO::adCmdStoredProc);
 }
 catch (...) {
  AfxMessageBox("调用存储过程P_MAIL_SEND有错!");
 }
 try{
  strP_mailid = (char*)(_bstr_t)m_pCommand->Parameters->GetItem(_variant_t("p_mailid"))->GetValue();
 }catch (...) {
  strP_mailid = "";
 }
 m_pCommand.Detach();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值