ADO助手加下手写30行代码完成大部分数据库代码
ADO助手加上手写30行代码完成大部分数据库代码
新版ADO助手1.20发布了,相应的数据库类也发布了,配合上两个宏即完成下面的数据库代码。
ADO助手使用详见《如何使用ADO助手生成数据库代码》
数据库类使用详见《MFC之ADO数据库快速编程》
用ADO助手根据SQL生成数据库记录类CDBDemo,在业务数据库类中CDBBusiness添加如下声明和实现
ADO_DECLARE(_, _, CDBDemo);
ADO_IMPLEMENT(_, _, CDBBusiness, CDBDemo, "tbl_Demo", "Guid", "Id, Guid, Name, Age, Photo");
上面两个宏编译后实现了如下数据库函数:
A.查询
B.计数
C.保存(有则更新无则插入)
新版ADO助手1.20发布了,相应的数据库类也发布了,配合上两个宏即完成下面的数据库代码。
ADO助手使用详见《如何使用ADO助手生成数据库代码》
数据库类使用详见《MFC之ADO数据库快速编程》
用ADO助手根据SQL生成数据库记录类CDBDemo,在业务数据库类中CDBBusiness添加如下声明和实现
ADO_DECLARE(_, _, CDBDemo);
ADO_IMPLEMENT(_, _, CDBBusiness, CDBDemo, "tbl_Demo", "Guid", "Id, Guid, Name, Age, Photo");
上面两个宏编译后实现了如下数据库函数:
A.查询
- C/C++ code
/* <summary> 通过主键定位获取单个记录 </summary> <param name="rData">记录的类对象</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _Select_(CDBDemo& rData, DWORD dwFlag = 0) const; /* <summary> 获取多个记录 注:请调用Count(*)计算个数或者直接定量,调用std::vector<T>::reserve预留内存空间,否则可能有性能影响 </summary> <param name="rData">记录的类向量对象</param> <param name="lpszCondition">SQL语句的WHERE子句,ORDER子句或者LIMIT子句任意组合,为空则查询整个表</param> <param name="lpszTop">SQL语句的TOP子句</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _Select_(std::vector<CDBDemo>& rData, LPCTSTR lpszCondition= _T(""), LPCTSTR lpszTop = _T(""), DWORD dwFlag = 0) const; /* <summary> 获取表数据,数据按主键升序排列 注:请调用Count(*)计算个数或者直接定量,调用std::vector<T>::reserve预留内存空间,否则可能有性能影响 </summary> <param name="rData">记录的类向量对象</param> <param name="lpszWhere">SQL语句的WHERE子句</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _SelectOrder_(std::vector<CDBDemo>& rData, LPCTSTR lpszWhere= _T(""), DWORD dwFlag = 0) const;
B.计数
- C/C++ code
/* <summary> 计算当前主键在表中个数,为0或者1 </summary> <param name="rData">记录的类对象</param> <param name="lCount">返回计算的个数,为0或者1</param> <returns>是否执行成功</returns> */ bool _Count_(const CDBDemo& rData, long &lCount) const; /* <summary> 计算类向量对象在数据库中的个数 </summary> <param name="rData">记录的类向量对象</param> <param name="lCount">计算类向量对象在数据库中的个数</param> <returns>是否执行成功</returns> */ bool _Count_(const std::vector<CDBDemo>& rData, long &lCount) const; /* <summary> 计算表中数据个数 </summary> <param name="lCount">返回计算的个数</param> <param name="lpszWhere">SQL语句的WHERE子句</param> <returns>是否执行成功</returns> */ bool _CountCDBDemo_(long &lCount, LPCTSTR lpszWhere= _T("")) const;
C.保存(有则更新无则插入)
- C/C++ code
/* <summary> 通过主键定位记录,没有则插入,有则更新 </summary> <param name="rData">记录的类对象</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _Save_(const CDBDemo& rData, DWORD dwFlag = 0) const; /* <summary> 用Update进行插入或者更新多个记录 </summary> <param name="rData">记录的类向量对象</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _Save_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const; /* <summary> 用UpdateBatch进行批量插入或者更新多个记录 </summary> <param name="rData">记录的类向量对象</param> <param name="dwFlag">用来控制类对象参与操作的字段</param> <returns>是否执行成功</returns> */ bool _SaveBatch_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const;