ODBC连接数据源,手动关联数据表
建立好ODCBC数据源之后,在VC工程中连接数据库,不用自动关联数据表,手动生成CRecordset类的派生类,
接下来就是在VC中怎么使用变量和数据库中表的字段名关联的问题;
比如自己手动先给工程中添加一个CRecordset类的派生类,姑且叫它CProRcordeset
1.派生类的头文件中定义变量,注意你的表里有多少个列,定义对应数量的变量,注意数据类型的对应。
class CProRecordset : public CRecordset
{
public:
CProRecordset(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CProRecordset)
// Field/Param Data
//{{AFX_FIELD(CProRecordset, CRecordset)
//定义字符串用来给CRecordset的记录集合对象传递变量,把数据库中数据和用户输入的数据进行交换用
CString strId;
CString strName;
CString strTel;
CString strAddr;
//}}AFX_FIELD
2.派生类的构造函数中初始化
CProRecordset::CProRecordset(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CProRecordset)
strId = _T("");
strName = _T("");
strTel = _T("");
strAddr = _T("");
m_nFields = 4;//要交换的列的数量必须
//}}AFX_FIELD_INIT
3.DoFieldExchange()函数中完成变量和字段名的交换
void CProRecordset::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CProRecordset)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[ID]"), strId);//完成交换
RFX_Text(pFX, _T("[NAME]"), strName);//
RFX_Text(pFX, _T("[TELEPHONE]"),strTel);//
RFX_Text(pFX, _T("[ADDRESS]"), strAddr);//
//}}AFX_FIELD_MAP
}
接着就可以使用这个记录集的对象对数据表进行操作了。