#ifndef _DaoBase_H_ #define _DaoBase_H_ #include "MysqlClient.h" class DaoEntity { public: DaoEntity(string tableName); ~DaoEntity(); static MysqlOption& mysqlOption(); static void setOption(std::string host, int port, std::string user, std::string pwd, std::string dbname); static std::shared_ptr create(string tableName); /** * 执行sql语句 * @param: sql 要执行的完整 sql 语句 */ static bool execOnce(string sql); /** * 执行sql语句,返回结果数据集 * @param: sql 要执行的完整 sql 语句 * @param: result 返回的结果数据集 */ static bool execOnce(string sql, vector& result); /** * 设置数据库表名称 * @param: tableName 数据表名 */ void setTableName(string tableName); /** * 设置数据库表名称 * @return: bool true: 连接成功;false:未连接/连接失败 */ bool isConnected(); /** * 执行sql语句 */ int exec(string sql); /** * 执行sql语句并返回执行(查询)的结果集 */ int exec(string sql, vector& result); /** * 数据库插入一条数据, 需要先指定数据表名称 * @param: fields 写入的数据字段和值 */ int insertFields(Fields& vecFields); /** * 数据库插入多条数据, 需要先指定数据表名称 * @param: vecFields 写入的数据字段和值的集合 */ int insertFields(vector& vecFields); /** * 数据库插入多条数据,UNIQUE索引或PRIMARY KEY重复时执行更新数据, 需要先指定数据表名称 * @param: vecFields 写入的数据字段和值的集合 * @param: keys 数据重复时需要更新的字段 */ int duplicateUpdate(Fields& vecFields, const vector& keys); /** * 数据库查询,需要先指定数据表名称 * @param: sql_c 查询条件,例:"where id='1'" * @param: result 查询的数据结果集 */ int queryFields(string keys, const string& sql_c, vector& result); /** * 数据库查询,需要先指定数据表名称 * @param: sql_c 查询条件,例:"where id='1'" * @param: pageinfo 分页信息 * @param: result 查询的数据结果集 */ int queryFields(string keys, const string& sql_c, PageInfo& pageinfo, vector& result); /** * 数据库更新,需要先指定数据表名称 * @param: fields 要更新的数据字段和值 * @param: sql_c 更新条件 */ int updateFields(Fields& fields, const string& sql_c); /** * 数据库更新,需要先指定数据表名称 * @param: fields 要更新的数据值 * @param: vecKeys 要更新的字段名称 * @param: cond 更新条件 */ int updateFields(Fields& fields, vector vecKeys, const string& cond); protected: static MysqlOption option; // mysql 数据库操作对象 std::shared_ptr db = nullptr; // 数据库表名称 string tableName; }; #endif // !!! _DaoBase_H_