分类:
2008-10-14 14:53:36
我们做数据库应用程序时,经常需要动态建立数据库连接,您知道怎么做吗?
下面的代码会给你提供一些帮助,效果如图
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
<完>