ADO数据库显示

#pragma warning (disable: 4146)
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")


	// TODO: Add extra initialization here
	m_listLinkInfo.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);   
	int i=0;
	m_listLinkInfo.InsertColumn(i++, "姓名",	LVCFMT_LEFT, 90);
	m_listLinkInfo.InsertColumn(i++, "电话",	LVCFMT_LEFT, 90);
	m_listLinkInfo.InsertColumn(i++, "邮件",	LVCFMT_LEFT, 100);
	m_listLinkInfo.InsertColumn(i++, "地址",	LVCFMT_LEFT, 120);
	m_listLinkInfo.InsertColumn(i++, "邮编",	LVCFMT_LEFT, 90);
	m_listLinkInfo.InsertColumn(i++, "ID",	LVCFMT_LEFT, 0);

	m_cmbCondition.SetCurSel(0);


	// 初始化COM
	AfxOleInit();
	ShowItem("select * from LinkInfo");	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CMyADODlg::ShowItem(CString strSQL)
{

	m_listLinkInfo.DeleteAllItems();

	_ConnectionPtr	m_pConnection;//创建连接对象指针
	m_pConnection.CreateInstance(__uuidof(Connection));//创建连接对象实例
	
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 因为它有时会经常出现一些意想不到的错误。
	try                 
	{	
		// 打开本地Access库AddressBook.mdb
		m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\AddressBook.mdb","","",adModeUnknown);
	}
	catch(_com_error e)
	{
		AfxMessageBox("数据库连接失败,确认数据库AddressBook.mdb是否在当前路径下!");
		return;
	}  


	_RecordsetPtr	m_pRecordset;//创建记录集对象指针
	m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象实例

	try
	{
		m_pRecordset->Open(_variant_t(strSQL),              // 查询LinkInfo表中所有字段
			m_pConnection.GetInterfacePtr(),				// 获取库接库的IDispatch指针
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}  

	_variant_t var;


	int i=0, j=0;
	CString strTmp;

	while(!m_pRecordset->adoEOF)
	{
		
		
		var = m_pRecordset->GetCollect("Name");		//获取Name字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.InsertItem(i, strTmp);

		var = m_pRecordset->GetCollect("Phone");	//获取Phone字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.SetItemText(i, ++j, strTmp);

		var = m_pRecordset->GetCollect("Email");//获取Email字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.SetItemText(i, ++j, strTmp);

		var = m_pRecordset->GetCollect("Address");//获取Address字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.SetItemText(i, ++j, strTmp);

		var = m_pRecordset->GetCollect("Postcode");			//获取Postcode字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.SetItemText(i, ++j, strTmp);

		var = m_pRecordset->GetCollect("PersonID");			//获取PersonID字段的值
		if(var.vt != VT_NULL)
			strTmp = (LPCSTR)_bstr_t(var);
		m_listLinkInfo.SetItemText(i, ++j, strTmp);

		i++;
		j=0;
		m_pRecordset->MoveNext();	//记录集指针移动到下一条记录					
	}
	m_pRecordset->Close();
	m_pRecordset.Release();
	m_pRecordset = NULL;
				
	if(m_pConnection->State)	
        m_pConnection->Close();		//关闭与数据库的连接
	m_pConnection= NULL;  

	UpdateData(FALSE);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值