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

01.
HRESULT hr;
02.
IDataSourceLocatorPtr dlPrompt=NULL;
03.
_RecordsetPtr rs=NULL;
04.
try
05.
{
06.
// 初始化DataLinks对象
07.
hr=dlPrompt.CreateInstance(__uuidof(DataLinks));
08.
if(FAILED(hr))
09.
throw(_com_error(hr,NULL));
10.
11.
// 建立连接
12.
pConn=dlPrompt->PromptNew();
13.
14.
// 如果 conn 为 NULL
15.
if(pConn==NULL)
16.
return;
17.
18.
// 打开连接
19.
pConn->Open(pConn->ConnectionString,L"",L"",-1);
20.
21.
// 清除列表框
22.
while(m_tblList.GetCount()>0)
23.
m_tblList.DeleteString(0);
24.
25.
// 获取数据库中表集
26.
rs=pConn->OpenSchema(adSchemaTables);
27.
while(!rs->adoEOF)
28.
{
29.
m_tblList.AddString((char*)(_bstr_t)rs->Fields->Item[L"TABLE_NAME"]->Value);
30.
rs->MoveNext();
31.
}
32.
rs=NULL;
33.
dlPrompt.Release();
34.
}
35.
catch (_com_error &e)
36.
{
37.
AfxMessageBox(e.ErrorMessage());
38.
}
需要注意的是,在建立工程时,要选上Automation选项,在StdAfx.h中加入下面代码
1.
#import "C:\program files\common files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.
//如果使用 ADO 2.0 加入下面代码
3.
#import "C:\Program Files\Common Files\System\Ole DB\msdasc.dll" no_namespace
4.
//如果使用 ADO 2.1 加入下面代码
5.
#import "C:\Program Files\Common Files\System\Ole DB\oledb32.dll" no_namespace
注:ADO2.0 或 ADO2.1 中,如果其中一个编译不成功,则用另一个我就说这么多,具体请参见MSDN
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q225132"]http://suppor-t.microsoft.com/default.aspx?scid=KB;EN-US;Q225132
<完>

本文介绍了一种使用DataLinks对象动态创建数据库连接的方法,并通过示例代码展示了如何利用该方法打开数据库连接并获取数据库中的表集。
229

被折叠的 条评论
为什么被折叠?



