1、在DVDRentDlg.h中声明两个函数,分别为初始化界面函数和根据sDVDID查询DVD名字。
2、在DVDRentDlg.cpp中添加函数功能:
void CDVDRentDlg::InitListCtrl()
{
HRESULT hr;
_RecordsetPtr pRentRecordset;
hr = pRentRecordset.CreateInstance(__uuidof(Recordset));
if (FAILED(hr)) {
MessageBox(_T("创建记录集对象失败."));
return;
}
try
{
CString strSQL;
strSQL = _T("SELECT * FROM tbRentInfo");
hr = pRentRecordset->Open(_variant_t(strSQL), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
if (SUCCEEDED(hr)) {
_variant_t var;
CString strValue;
int curItem = 0;
while (!pRentRecordset->GetadoEof()) {
var = pRentRecordset->GetCollect((long)0);
if (var.vt != NULL)
strValue = (LPCTSTR)_bstr_t(var);
m_rentInfoList.InsertItem(curItem, strValue);
var = pRentRecordset->GetCollect(_T("sName"));
if (var.vt != NULL)
strValue = (LPCTSTR)_bstr_t(var);
m_rentInfoList.SetItemText(curItem, 1, strValue);
var = pRentRecordset->GetCollect(_T("sDVDID"));
if (var.vt != NULL)
strValue = (LPCTSTR)_bstr_t(var);
m_rentInfoList.SetItemText(curItem, 2, QueryDVDName(strValue));
var = pRentRecordset->GetCollect(_T("sDate"));
if (var.vt != NULL)
strValue = (LPCTSTR)_bstr_t(var);
m_rentInfoList.SetItemText(curItem, 3, strValue);
pRentRecordset->MoveNext();
curItem++;
}
}
else {
MessageBox(_T("打开结果记录集失败."));
return;
}
}
catch (_com_error &e) {
MessageBox(e.ErrorMessage());
return;
}
pRentRecordset->Close();
pRentRecordset = NULL;
}
CString CDVDRentDlg::QueryDVDName(CString& dvdID)
{
HRESULT hr;
_RecordsetPtr pRentRecordset;
hr = pRentRecordset.CreateInstance(__uuidof(Recordset));
if (FAILED(hr)) {
MessageBox(_T("创建记录集对象失败."));
return FALSE;
}
try
{
CString strSQL;
strSQL = _T("SELECT * FROM tbDVDInfo where sDVDID="+dvdID);
hr = pRentRecordset->Open(_variant_t(strSQL), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
if (SUCCEEDED(hr)) {
_variant_t var;
CString strValue;
var = pRentRecordset->GetCollect(_T("sDVDName"));
if (var.vt != NULL) {
strValue = (LPCTSTR)_bstr_t(var);
return strValue;
}
}
else {
MessageBox(_T("打开结果记录集失败."));
return FALSE;
}
}
catch (_com_error &e) {
MessageBox(e.ErrorMessage());
return FALSE;
}
pRentRecordset->Close();
pRentRecordset = NULL;
return FALSE;
}
3、在MFC初始化函数中添加函数:
4、运行后界面如图:
5、数据库原型如下(根据VC驿站原教程而来):
6、本节工程地址:
链接:https://pan.baidu.com/s/1ntFtelTbB9q96wP6duqXQg
提取码:4in7
欢迎有任何问题留言----------------------------》