插件开发技术(9)---SQL查询记录与对象的映射

本文演示如何使用SQL查询获取用户数据,并将其映射到自定义用户对象中。

以下是一个示例,执行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_; ///< 部门名称
};




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值