读书人

ADO助手加下手写30行代码完成大部分数

发布时间: 2012-11-03 10:57:43 作者: rapoo

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.查询

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; 


D.插入
C/C++ code
    /*    <summary>    用Update进行插入单个记录    </summary>    <param name="rData">记录的类对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _Insert_(const CDBDemo& rData, DWORD dwFlag = 0) const;        /*    <summary>    用Update进行插入多个记录    </summary>    <param name="rData">记录的类向量对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _Insert_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const;        /*    <summary>    用UpdateBatch进行批量插入多个记录    </summary>    <param name="rData">记录的类向量对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _InsertBatch_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const;

E.更新
C/C++ code
    /*    <summary>    用Update进行更新单个记录    </summary>    <param name="rData">记录的类对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _Update_(const CDBDemo& rData, DWORD dwFlag = 0) const;        /*    <summary>    用Update进行更新多个记录,确保记录集与类向量对象个数及顺序一致性,否则会发生更新错乱    </summary>    <param name="rData">记录的类向量对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _Update_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const;        /*    <summary>    用UpdateBatch进行批量更新多个记录,确保记录集与类向量对象个数及顺序一致性,否则会发生更新错乱    </summary>    <param name="rData">记录的类向量对象</param>    <param name="dwFlag">用来控制类对象参与操作的字段</param>    <returns>是否执行成功</returns>    */    bool _UpdateBatch_(const std::vector<CDBDemo>& rData, DWORD dwFlag = 0) const;

F.删除
C/C++ code
    /*    <summary>    通过主键定位,删除单个记录    </summary>    <param name="rData">记录的类对象</param>    <returns>是否执行成功</returns>    */    bool _Delete_(const CDBDemo& rData) const;        /*    <summary>    删除多个记录    </summary>    <param name="rData">记录的类向量对象</param>    <returns>是否执行成功</returns>    */    bool _Delete_(const std::vector<CDBDemo>& rData) const;        /*    <summary>    删除表记录    </summary>    <param name="lpszWhere">SQL语句的WHERE子句</param>    <returns>是否执行成功</returns>    */    bool _DeleteCDBDemo_(LPCTSTR lpszWhere= _T("")) const;


[解决办法]
感谢分享!下载试试先。
[解决办法]

[解决办法]
果断收藏!
[解决办法]
下载试试先。

读书人网 >VC/MFC

热点推荐