MFC数据库操作 - 获取数据库内容

本文档展示了如何在MFC应用程序中使用ADO的_RecordsetPtr对象来操作数据库,从students表中获取所有列,并将数据填充到列表控件中。主要步骤包括创建Recordset对象、打开数据集、通过GetCollect获取字段值、遍历记录集以及关闭记录集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//定义 _RecordsetPtr 型变量;
HRESULT hr;
_RecordsetPtr pRentRecordset;
hr = pRentRecordset.CreateInstance(__uuidof(Recordset));
if (FAILED(hr)) {
MessageBox(_T("创建记录集对象失败."));
return;
}

//调用其 Open 方法,打开一个数据集;
CString strSQL;
strSQL = _T("SELECT * FROM students");
try
{
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_list->InsertItem(curItem, strValue);
}

var = pRentRecordset->GetCollect(_T("sname"));
if (var.vt != NULL)
{
strValue = (LPCTSTR)_bstr_t(var);
m_list->SetItemText(curItem,1, strValue);
}

var = pRentRecordset->GetCollect(_T("ssex"));
if (var.vt != NULL)
{
strValue = (LPCTSTR)_bstr_t(var);
m_list->SetItemText(curItem,2, strValue);
}

var = pRentRecordset->GetCollect(_T("sage"));
if (var.vt != NULL)
{
strValue = (LPCTSTR)_bstr_t(var);
m_list->SetItemText(curItem,3, strValue);
}

var = pRentRecordset->GetCollect(_T("sdept"));
if (var.vt != NULL)
{
strValue = (LPCTSTR)_bstr_t(var);
m_list->SetItemText(curItem,4, strValue);
}


pRentRecordset->MoveNext();
curItem++;
}
}else
{
MessageBox(_T("打开结果记录集失败."));
return;
}
}

catch(_com_error *e)
{
MessageBox(e->ErrorMessage());
return;
}
pRentRecordset->Close();
pRentRecordset = NULL;

使用记录集对象的过程步骤:
⑴ 定义 _RecordsetPtr 型变量;
⑵ 调用其 Open 方法,打开一个数据集;
⑶ 可以使用 GetCollect 方法获取记录的字段值;
⑷ 使用 Move 系列方法实现记录集的遍历;
⑸ 关闭记录集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值