ADO使用笔记

一、引入ADO库文件
 在stdafx.h文件末尾添加以下语句:
 #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF")
 注意上面语句不要放在开头,否则编译产生下面错误提示:
 fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h> c:/program files/microsoft visual studio 8/vc/atlmfc/include/afxv_w32.h 16 
 
二、初始化OLE/COM库环境
 在应用程序主类的InitInstance成员函数里加入
 if(!AfxOleInit())
 {
  AfxMessageBox("OLE初始化出错!");
  return FALSE;
 }
 
三、使用ADO接口
 ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
 _ConnectionPtr接口返回一个记录集或一个空指针,使用它创建一个数据连接,然后使用其它对象执行数据输入输出操作。
 _CommandPtr接口返回一个记录集,它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
 _RecordsetPtr是一个记录集对象,与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。
 1、使用_ConnectionPtr接口
  _ConnectionPtr MyDb;
  MyDb.CreateInstance(__uuidof(Connection));
  MyDb->Open("Provider=SQLOLEDB;SERVER=127.0.0.1;DATABASE=Northwind;UID=sa;PWD=","","",-1);
 2、使用_RecordsetPtr接口
  //用_RecordsetPtr接口获得记录集
  _RecordsetPtr MySet;
  MySet.CreateInstance(__uuidof(Recordset));
  MySet->Open("SELECT * FROM Employees", MyDb.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
  //访问数据
  _variant_t Holder;
  try
  {
   while(!MySet->adoEOF)
   {
    Holder = MySet->GetCollect("FirstName");
    if(Holder.vt!=VT_NULL)
     m_List.InsertItem(0,(char*)(_bstr_t)Holder);  //m_List是ListBox控件
    MySet->MoveNext();
   }
  }
  catch(_com_error * e)
  {
   CString Error = e->ErrorMessage();
   AfxMessageBox(e->ErrorMessage());
  }
  catch(...)
  {
   MessageBox("ADO发生错误!");
  }
 3、使用_CommandPtr接口获取数据
  _CommandPtr pCommand;
  _RecordsetPtr MySet1;
  pCommand.CreateInstance(__uuidof(Command));
  pCommand->ActiveConnection=MyDb;
  pCommand->CommandText="select * from Employees";
  pCommand->CommandType=adCmdText;
  pCommand->Parameters->Refresh();
  MySet=pCommand->Execute(NULL,NULL,adCmdUnknown);
  _variant_t TheValue = MySet->GetCollect("FirstName");
  CString sValue=(char*)_bstr_t(TheValue);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值