③利用CRecordset类的成员函数。MFC在CRecordset类中提供了获取表结构信息方法,使用非常方便。(但很奇怪为什么CDatabase类没有获取库结构信息的类方法?)
我们以利用CRecodrset为例简单说明怎样得到表结构。假设现在要得到用户在CComboBox对象中所选表的所有字段名,并将它埴入一个CListCtrl对象(其View属性被设为Report)的列名中去:
//m_strTableOwner和上同,为CComboBox对象
//m_listData为ClistCtrl对象
CRecordset rs
CODBCFieldInfo info;
CString strSQL;
m_combTable.GetLBText(m_combTable.GetCurSel(), strSQL);
strSQL = _T("SELECT * FROM ") + strSQL;
rs.Open(Open(CRecordset::snapshot, strSQL, CRecordset::readOnly);
int nColumns = rs.GetODBCFieldCount();
for (int nNum = 0; nNum < nColumns; nNum++)
{
prs->GetODBCFieldInfo(nNum, info);
m_listData.InsertColumn(nNum, info.m_strName, LVCFMT_LEFT, 80)
}
另外,我们可以利用CRecordSet::GetFieldValue函数通过指定列名或列序数得到记录集中游标所指记录的值,通过CRecordset::AddNew、CRecordset::CancelUpdate、CRecordset::Delete、CRecordset::Edit、CRecordset::Update等函数操作CRecordset打开的表。