Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9547574
  • 博文数量: 1227
  • 博客积分: 10026
  • 博客等级: 上将
  • 技术积分: 20273
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-16 12:40
文章分类

全部博文(1227)

文章存档

2010年(1)

2008年(1226)

我的朋友

分类: C/C++

2008-03-14 09:48:33

 请下载源代码,结合代码可以更清楚

我们做数据库应用程序时,经常需要动态建立数据库连接,您知道怎么做吗?下面的代码会给你提供一些帮助,效果如图

数据连接属性对话框

HRESULT hr;
IDataSourceLocatorPtr dlPrompt=NULL;
_RecordsetPtr rs=NULL;
try
{
  // 初始化DataLinks对象
  hr=dlPrompt.CreateInstance(__uuidof(DataLinks));
  if(FAILED(hr))
 throw(_com_error(hr,NULL));

  // 建立连接
  pConn=dlPrompt->PromptNew();

  // 如果 conn 为 NULL
  if(pConn==NULL)
 return;

  // 打开连接
  pConn->Open(pConn->ConnectionString,L"",L"",-1); 

  // 清除列表框
  while(m_tblList.GetCount()>0)
 m_tblList.DeleteString(0);

  // 获取数据库中表集
  rs=pConn->OpenSchema(adSchemaTables);
  while(!rs->adoEOF)
  {
 m_tblList.AddString((char*)(_bstr_t)rs->Fields->Item[L"TABLE_NAME"]->Value);
 rs->MoveNext();
  }
  rs=NULL;
  dlPrompt.Release();
}
catch (_com_error &e)
{
 AfxMessageBox(e.ErrorMessage());
}

需要注意的是,在建立工程时,要选上Automation选项,

在StdAfx.h中加入下面代码

#import "C:\program files\common files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
//如果使用 ADO 2.0 加入下面代码
#import "C:\Program Files\Common Files\System\Ole DB\msdasc.dll" no_namespace 
//如果使用 ADO 2.1 加入下面代码
#import "C:\Program Files\Common Files\System\Ole DB\oledb32.dll" no_namespace

注:ADO2.0 或 ADO2.1 中,如果其中一个编译不成功,则用另一个

我就说这么多,具体请参见MSDN

 请下载源代码,结合代码可以更清楚

阅读(1188) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~