#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);
}