《VC数据库系统开发导航》中的第四章的ADO数据绑定类CADORecordBinding是如何出来的?谢了

liushulei 2003-09-22 02:38:43
《VC数据库系统开发导航》中的第四章的ADO数据绑定类CADORecordBinding是如何出来的?谢了
...全文
49 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahu 2004-02-24
  • 打赏
  • 举报
回复
刚好参考做了一个
头文件
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscvcextensionsheaderindetail.asp

#include "StdAfx.h"
#include "icrsint.h"
//包含在上面这个头文件里面
class CCustomRs : public CADORecordBinding
{
//开始进行数据类型绑定
BEGIN_ADO_BINDING(CCustomRs)
//把Recordset的第2个adVarChar类型的字段绑定到C/C++变量m_ch_fname上
//ADO_NUMERIC_ENTRY(1, adInteger, m_nID,
//sizeof(m_nID),0, m_ul_ID_Status, false)
ADO_VARIABLE_LENGTH_ENTRY2(1, adInteger, m_nID,
sizeof(m_nID), m_ul_ID_Status, false)
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_ch_name,
sizeof(m_ch_name), m_ul_nameStatus, false)
ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_ch_pwd,
sizeof(m_ch_pwd), m_ul_pwdStatus, false)
//结束绑定
END_ADO_BINDING()

//紧接着定义上述宏中用到的C/C++变量
public:
int m_nID;
ULONG m_ul_ID_Status;
CHAR m_ch_name[22];
CHAR m_ch_pwd[32];
ULONG m_ul_nameStatus;
ULONG m_ul_pwdStatus;
};

调用
参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscexampleadowithextensions.asp

if(m_pRs==NULL||m_pRs->State!=adStateOpen)
return;
//if(m_pRs->)
try
{
IADORecordBindingPtr binRs(m_pRs);
CCustomRs rs;
binRs->BindToRecordset(&rs);
m_pRs->MoveFirst();
CString str;
while (!m_pRs->IsEOF)
{
// Process data in the CCustomRs C++ instance variables.
str.Format("ID=%d \nName = %s \nPassword=%s\n",
(rs.m_ul_ID_Status == adFldOK ? rs.m_nID: 0),
(rs.m_ul_nameStatus == adFldOK ? rs.m_ch_name: ""),
(rs.m_ul_pwdStatus == adFldOK ? rs.m_ch_pwd: ""));

AfxMessageBox(str);
m_pRs->MoveNext();
}
binRs->BindToRecordset(NULL);
binRs->Release();
}
catch(_com_error &e)
{
AfxMessageBox(_bstr_t(e.ErrorMessage())+_bstr_t(e.Description()));
}
hahu 2004-02-24
  • 打赏
  • 举报
回复
刚好参考做了一个

#include "StdAfx.h"
#include "icrsint.h"

class CCustomRs : public CADORecordBinding
//包含在icrsint.h里面http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscvcextensionsheaderindetail.asp
{
//开始进行数据类型绑定
BEGIN_ADO_BINDING(CCustomRs)
//把Recordset的第2个adVarChar类型的字段绑定到C/C++变量m_ch_fname上
//ADO_NUMERIC_ENTRY(1, adInteger, m_nID,
//sizeof(m_nID),0, m_ul_ID_Status, false)
ADO_VARIABLE_LENGTH_ENTRY2(1, adInteger, m_nID,
sizeof(m_nID), m_ul_ID_Status, false)
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_ch_name,
sizeof(m_ch_name), m_ul_nameStatus, false)
ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_ch_pwd,
sizeof(m_ch_pwd), m_ul_pwdStatus, false)
//结束绑定
END_ADO_BINDING()

//紧接着定义上述宏中用到的C/C++变量
public:
int m_nID;
ULONG m_ul_ID_Status;
CHAR m_ch_name[22];
CHAR m_ch_pwd[32];
ULONG m_ul_nameStatus;
ULONG m_ul_pwdStatus;
};
调用的时候
参考这篇文章
http://www.yesky.com/20021014/1634674_1.shtml

if(m_pRs==NULL||m_pRs->State!=adStateOpen)
return;
//if(m_pRs->)
try
{
IADORecordBindingPtr binRs(m_pRs);
CCustomRs rs;
binRs->BindToRecordset(&rs);
m_pRs->MoveFirst();
CString str;
while (!m_pRs->IsEOF)
{
// Process data in the CCustomRs C++ instance variables.
str.Format("ID=%d \nName = %s \nPassword=%s\n",
(rs.m_ul_ID_Status == adFldOK ? rs.m_nID: 0),
(rs.m_ul_nameStatus == adFldOK ? rs.m_ch_name: ""),
(rs.m_ul_pwdStatus == adFldOK ? rs.m_ch_pwd: ""));

AfxMessageBox(str);
m_pRs->MoveNext();
}
binRs->BindToRecordset(NULL);
binRs->Release();
}
catch(_com_error &e)
{
AfxMessageBox(_bstr_t(e.ErrorMessage())+_bstr_t(e.Description()));
}
ZHENG017 2004-02-24
  • 打赏
  • 举报
回复
我猜啊,是从msdn里paste出来的。连类名都没变。
试试在msdn中搜索" CADORecordBinding"
sony19791015 2004-02-24
  • 打赏
  • 举报
回复
gz
JakeLian 2004-02-23
  • 打赏
  • 举报
回复
1.引入ADO库(好像是2.5以上才支持)
2.引入#include "icrsint.h"
cdwy411 2003-11-16
  • 打赏
  • 举报
回复
初始化 ole环境
直接继承即可
crystal_heart 2003-11-16
  • 打赏
  • 举报
回复
up
genhualiu 2003-11-16
  • 打赏
  • 举报
回复
哈哈....和我一样,
我刚刚碰到这个问题,所以上网来找一下.

没想到,呵呵....
这个是继承generic的,也就是自己写上去的.
我猜
csuxiong 2003-09-26
  • 打赏
  • 举报
回复
MFC里面当然没有,例如MSChart的类CMSChart类,MSFlexGrid的类CMSHFlexGrid在MFC里面都没有,很正常呀!
Allesgut 2003-09-26
  • 打赏
  • 举报
回复
你用数据绑定的时候在stdafx.h最后加上#include "icrsint.h"
liushulei 2003-09-24
  • 打赏
  • 举报
回复
继承CADORecordBinding类,可是MFC里没有
zhabj925 2003-09-24
  • 打赏
  • 举报
回复
不懂,“CADORecordBinding是如何出来的”什么意思?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧