vc++实现反射式数据库模版(4.实现数据库模版)
来源:互联网 发布:简单视频编辑软件 编辑:程序博客网 时间:2024/04/26 06:19
接上篇vc++实现反射式数据库模版(3.序列化、反序列化与消息映射)
前三节参照MFC实现了数据模型的序列化工作。这一节就利用ADO完成数据库模版,这里实现增加和查询功能,有兴趣可以自己参照完成删除和更新。
由于查询结果可能是一个集合,这里我们把数据模型设计成链表,只需在基类增加TDObject* m_pNextObject;指向下个数据模型的指针。
参照软件设计原则,我们把业务对象和业务逻辑分开。建立TDLogic做为我们的数据操作模版。
#pragma once
#include"TDObject.h"
//连接字符串
#define CONNECTIONSTRING"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=TDDataBase;Data Source=."
class TDLogic
{
public:
TDLogic(void);
~TDLogic(void);
//增加数据
bool Insert(TDObject* pObject);
//查询数据,pObject保存查询条件
TDObject* Select(TDObject* pObject);
private:
//ADO
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
};
使用时链接字符串改成自己的,我们这里数据库名为TDDataBase。存在两个表:TDCar与TDPerson。根据各自对应关系完成数据库。
id这里做为自增主键(注意标识规范选择是)。
使用时我们只需要将数据对象传递进去就可以了,十分方便。
//初始化com
CoInitialize(NULL);
//测试
TDPersonp;
p.set_name("小明");
p.set_age(10);
TDCarc;
c.set_name("奔驰");
c.set_price("500000.5");
/*p.show();
c.show();*/
TDLogiclogic;
//增加信息
logic.Insert(&p);
logic.Insert(&c);
//查询信息
PrintSelect(&p);
PrintSelect(&c);
CoUninitialize();
PrintSelect是为了方便封装的一个测试函数,用于显示查询结果,直接看源码就可以了,这里不做解释。
运行结果:
结果不出意外,我们用一个通用的函数实现了对不同数据模型的增加和查询。
使用时我们的只需要创建自己的数据模型类继承TDObject,添加初始化宏,实现宏和初始化成员变量及成员变量映射。
后续优化:这四节简单实现了功能,后续扩展优化空间仍然很大,比如可以通过智能指针替换接收的链表,这样既能防止内存泄漏更加方便操作;TDLogic用单例模式来实现等。这些都需要根据具体功能和习惯自己去研究了。
到这里数据库模版章节已经完了,后续我们会在该基础上继续实现与HTTP服务器的soap交互,从C/S过渡到B/S。
文中测试使用数据库在源码首页,方便添加测试。
源码下载:http://download.csdn.net/detail/u011736517/9762820
- vc++实现反射式数据库模版(4.实现数据库模版)
- vc++实现反射式数据库模版(2.动态创建)
- vc++实现反射式数据库模版(1.运行时类识别)
- vc++实现反射式数据库模版(3.序列化、反序列化与消息映射)
- 数据库模版
- 常见数据库模版
- Oracle数据库巡检模版
- 模版实现顺序表
- 模版实现单链表
- C++函数模版实现
- 排序算法模版实现
- c++模版及模版类简单实现
- SpringMVC实现velocity多Resourceloader通过文件、数据库等方式加载模版
- 数据库课程设计报告格式模版
- 简易栈模版(链表实现)
- 简单循环队列模版(数组实现)
- 循环队列模版(链表实现)
- 栈C++模版实现(链表版)
- awk
- 有环单链表相交判断练习
- python学习2-列表
- django 模版编码问题
- yii2.0 处理密码
- vc++实现反射式数据库模版(4.实现数据库模版)
- Linux并发服务器实现
- Reflexi 反编译代码
- C# 压缩
- MyBatis 源码分析——生成Statement接口实例
- jsPatch
- 5-1 最大子列和问题 (20分)
- 使用redis部署集群
- Codeforces Round #400 (Div. 1 + Div. 2, combined)B.Sherlock and his girlfriend【预处理素数+思维】