#pragma once #include "../acl_cpp_define.hpp" #if !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE) namespace acl { class ACL_CPP_API mysql_conf { public: /** * 构造函数 * @param dbaddr {const char*} 数据库连接地址,可以为 TCP 套接口或 * UNIX 域套接口,当为 TCP 套接口时,地址格式为:ip:port, 当为 UNIX * 域套接口时,地址格式:/xxx/xxx/xxx.sock * @param dbname {const char*} 数据库名 */ mysql_conf(const char* dbaddr, const char* dbname); /** * 拷贝构造函数 * @param conf {const mysql_conf&} 内部创建新对象同时拷贝输入对象内容 */ mysql_conf(const mysql_conf& conf); ~mysql_conf(); /** * 设置连接数据库时的用户账号 * @param dbuser {const char*} 当为非空字符串时指定用户账号 * @return {mysql_conf&} */ mysql_conf& set_dbuser(const char* dbuser); /** * 设置连接数据库时的账号密码 * @param dbpass {const char*} 当为非空字符串时指定账号密码 * @return {mysql_conf&} */ mysql_conf& set_dbpass(const char* dbpass); /** * 设置数据库连接池最大连接上限 * @param dblimit {size_t} 连接池最大连接数限制,当为 0 时则不限制 * @return {mysql_conf&} */ mysql_conf& set_dblimit(size_t dblimit); /** * 设置 mysql 数据库的一些特殊标志位 * @param dbflags {unsigned long} * @return {mysql_conf&} */ mysql_conf& set_dbflags(unsigned long dbflags); /** * 设置当修改数据库内容时是否允许自动提交,默认为自动提交 * @param on {bool} * @return {mysql_conf&} */ mysql_conf& set_auto_commit(bool on); /** * 设置连接数据库的超时时间 * @param timeout {int} * @return {mysql_conf&} */ mysql_conf& set_conn_timeout(int timeout); /** * 设置读取数据库结果的超时时间 * @param timeout {int} * @return {mysql_conf&} */ mysql_conf& set_rw_timeout(int timeout); /** * 设置数据库连接的字符集 * @param charset {const char*} * @return {mysql_conf&} */ mysql_conf& set_charset(const char* charset); const char* get_dbaddr() const { return dbaddr_; } const char* get_dbname() const { return dbname_; } const char* get_dbkey() const { return dbkey_; } const char* get_dbuser() const { return dbuser_; } const char* get_dbpass() const { return dbpass_; } size_t get_dblimit() const { return dblimit_; } unsigned long get_dbflags() const { return dbflags_; } bool get_auto_commit() const { return auto_commit_; } int get_conn_timeout() const { return conn_timeout_; } int get_rw_timeout() const { return rw_timeout_; } const char* get_charset() const { return charset_; } private: char* dbaddr_; // 数据库监听地址 char* dbname_; // 数据库名 char* dbkey_; // dbname@dbaddr char* dbuser_; // 数据库账号 char* dbpass_; // 数据库账号密码 char* charset_; // 连接数据库时的字符集 size_t dblimit_; // 数据库连接池连接数上限 unsigned long dbflags_; // 打开数据库时的标志位 bool auto_commit_; // 是否自动提交修改后的数据 int conn_timeout_; // 连接数据库的超时时间 int rw_timeout_; // 与数据库通信的超时时间 }; } // namespace acl #endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)