龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC++ ADO开发实践之六(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
CDialog::OnInitDialog(); _variant_t TheValue; m_List.ResetContent(); m_pConnection.CreateInstance(_uuidof(Connection)); m_pRecordset.CreateInstance(_uuidof(Recordset)); try{ m_pConnection-Open("DSN=AD

CDialog::OnInitDialog();

_variant_t TheValue;

m_List.ResetContent();

  m_pConnection.CreateInstance(_uuidof(Connection));

  m_pRecordset.CreateInstance(_uuidof(Recordset));

  try{

m_pConnection->Open("DSN=ADOTest","","",0); //连接叫作ADOTest的ODBC数据源

m_pRecordset->Open("SELECT * FROM BlockDefine",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);

  //执行SQL语句得到一个记录集

   while(!m_pRecordset->adoEOF)

  //遍历所有记录

   {

   TheValue = m_pRecordset->GetCollect("BlockIndex");

  //得到字段BlockIndex的值

   if(TheValue.vt!=VT_NULL)

   m_List.AddString((char*)_bstr_t(TheValue)); //将该值加入到列表控件中

   m_pRecordset->MoveNext();

  }

   m_pRecordset->Close();

m_pConnection->Close();

   }

   catch(_com_error e) //异常处理

   {

AfxMessageBox(e->ErrorMessage());

  }

  m_pRecordset = NULL;

m_pConnection = NULL;

  return TRUE; // return TRUE unless you set the focus to a control

  }

  程序中通过_variant_t和_bstr_t转换COM对象和C++类型的数据, _variant_t类封装了OLE自治VARIANT数据类型。在C++中使用_variant_t类要比直接使用VARIANT数据类型容易得多。

  好,编译后该程序就能运行了,但记住运行前要创建一个叫ADOTest的ODBC数据源。该程序将把表BlockDefine中的BlockIndex字段值显示在列表控件中。

精彩图集

赞助商链接