以下是一个示例,执行SQL查询,把返回的CRecordset记录内容映射到用户对象(CUserInfo)上.
#include "RecordsetBinder.h"
///< 获取用户对象
IUserInfo* CLMPlugin::GetUser(CQQ_ORGID orgid,CQQ_USERSERIAL userserial) {
GETDBC(pdbor,local_dbc_.c_str());
string sql = LogMsg("select * from tb_1001 where orgid=%lu and userserial=%lu",orgid,userserial);
AUTO_QUERY_RECORDSET(CRecordset,prs,pdbor);
prs = pdbor->Query(adCmdText,sql.c_str());
if (prs==0) {
return 0;
}
if (prs->IsEof())
return 0;
CRecordsetBindObject<CUserInfo> binder;
binder.BindRecordset(prs);
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_ULONG,0,id_,"userserial"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,name_,"f004v_1001"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,dept_name_,"f036v_1001"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,addr_,"f018v_1001"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,phone_no_,"f013v_1001"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,mobile_no_,"f014v_1001"));
binder.BindField(NEW_FIELD_BIND(CUserInfo,ORM_FIELD_TYPE_STRING,0,email_,"f016v_1001"));
return binder.ToObject();
}
CUserInfo定义
class CUserInfo
public IUserInfo {
public:
CQQ_USERSERIAL id_; ///< 用户编号
string account_name_; ///< 帐号
string name_; ///< 姓名
string addr_; ///< 地址
string phone_no_; ///< 办公电话
string mobile_no_;///< 手机号码
string email_; ///< 邮件地址
string dept_name_; ///< 部门名称
};