择IDC_SOURCE,在“Messages”下拉列表中选择BN_CLICKED,单击“Add
Function”,采用默认的函数名,然后依次单击“OK”和“Edit Code”按钮,定位到函数
CAdoTestView::OnSource(),代码如下:
void CAdoTestView::OnSource()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
HRESULT hr;
IDataSourceLocatorPtr m_dlPrompt = NULL;
_ConnectionPtr m_Conn = NULL;
//初始化COM
::CoInitialize(NULL);
枫叶文学网www.fywxw.com
第12 章 数据库开发
·361·
//创建IDataSourceLocatorPtr 的实例
hr = m_dlPrompt.CreateInstance(__uuidof(DataLinks));
//弹出数据连接的对话框
m_Conn = m_dlPrompt->PromptNew();
if (m_Conn!=NULL)
{
//将连接字符串复制到m_strConnect 中
m_strConnection.Format("%s", (char*)m_Conn->ConnectionString);
//将变量中的值保存到控件中
UpdateData(FALSE);
}
}
编写好设置数据源的代码,接下来该为“连接”按钮编写响应函数了。在编写此函数之
前,先要编写数据库表名的函数。因为当连接成功时,在List Box 控件中会显示出数据库中
所有表的名称。为类CAdoTestView 添加一个函数void getTables(),它是public 的,用来显
示表名。代码如下:
void CAdoTestView::getTables()
{
_bstr_t tablesNcoms;
CString kooky;
//先将List Box 清空
m_ListBox.ResetContent();
//将控件中的值保存到变量中
UpdateData( TRUE);
try
{
//创建实例
m_Recordset.CreateInstance(__uuidof(Recordset));
//以只读方式打开结果集,得到表名信息
m_Recordset = m_Connection->OpenSchema (adSchemaTables,vtMissing,vtMissing);
//如果结果集没有结束
whil