acl/lib_acl_cpp/include/acl_cpp/db/mysql_conf.hpp

156 lines
3.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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)