Recordset的用法。
CDatabase db;
TRY{
db.OpenEx("DSN=creaderdb;UID=sa;PWD=iceriver!!@!smiler");
rs.Open(CRecordset::dynaset,_T("Select Name,Sex From C"));
CDBVariant varValue;
CString Name;
rs.GetFieldValue(1,varValue);//我不知道怎样把值去出来赋给Name。请各位高手指教。
}
CATCH(CDBException,e)
{
}
END_CATCH
问题点数:50、回复次数:2Top
1 楼BenjaminNing(大漠孤烟)回复于 2000-09-27 17:15:00 得分 50
zaiqian:
朋友, 你对 MFC的 CRecordset可能没有完全理解, 请仔细阅读如下的代码, 数据和变量是通过 void CBkClerkSet::DoFieldExchange(CFieldExchange* pFX) 函数实现的(由Wizard生成), 相信你一定能明白!
class CBkClerkSet : public CRecordset
{
public:
CBkClerkSet(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CBkClerkSet)
// Field/Param Data
//{{AFX_FIELD(CBkClerkSet, CRecordset)
CString m_cEmpID;
CString m_cName;
CString m_cPwd;
CString m_cSex;
CString m_cTel;
CString m_cGrpID;
long m_iPriv;
CString m_cEnterBy;
CTime m_dCreate;
//}}AFX_FIELD
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBkClerkSet)
public:
virtual CString GetDefaultConnect(); // Default connection string
virtual CString GetDefaultSQL(); // Default SQL for Recordset
virtual void DoFieldExchange(CFieldExchange* pFX); // RFX support
//}}AFX_VIRTUAL
// Implementation
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
};
/////////////////////////////////////////////////////////////////////////////
// CBkClerkSet
IMPLEMENT_DYNAMIC(CBkClerkSet, CRecordset)
CBkClerkSet::CBkClerkSet(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CBkClerkSet)
m_cEmpID = _T("");
m_cName = _T("");
m_cPwd = _T("");
m_cSex = _T("");
m_cTel = _T("");
m_cGrpID = _T("");
m_iPriv = 0;
m_cEnterBy = _T("");
m_nFields = 9;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
}
CString CBkClerkSet::GetDefaultConnect()
{
return _T("ODBC;DSN=spm");
}
CString CBkClerkSet::GetDefaultSQL()
{
return _T("[dbo].[tEmployees]");
}
void CBkClerkSet::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CBkClerkSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[cEmpID]"), m_cEmpID);
RFX_Text(pFX, _T("[cName]"), m_cName);
RFX_Text(pFX, _T("[cPwd]"), m_cPwd);
RFX_Text(pFX, _T("[cSex]"), m_cSex);
RFX_Text(pFX, _T("[cTel]"), m_cTel);
RFX_Text(pFX, _T("[cGrpID]"), m_cGrpID);
RFX_Long(pFX, _T("[iPriv]"), m_iPriv);
RFX_Text(pFX, _T("[cEnterBy]"), m_cEnterBy);
RFX_Date(pFX, _T("[dCreate]"), m_dCreate);
//}}AFX_FIELD_MAP
m_cEmpID.TrimRight();
m_cPwd.TrimRight();
}
/////////////////////////////////////////////////////////////////////////////
// CBkClerkSet diagnostics
#ifdef _DEBUG
void CBkClerkSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CBkClerkSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG
Top
2 楼crm2000(浏览器)回复于 2000-10-01 10:46:00 得分 0
得到varValue后,根据CDBVariant的成员可以根据数据类型来获得实际的值。Top




