ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nmysql Class Reference

Public Types

using callback = std::function<bool(MYSQL_ROW, unsigned long*, my_ulonglong, my_ulonglong)>
 执行一条查询并通过回调函数逐行流式处理结果。

Public Member Functions

 nmysql ()=default
 默认构造函数
bool connectdb (const xarg_db &arg)
 使用提供的XML配置打开一个MySQL连接。
void closedb ()
 关闭已存在的MySQL连接。
bool changedb (MYSQL *amysql, std::string &adbname)
 在已有连接上切换活动数据库。
bool query (const char *asql, std::size_t alen)
 执行一条不返回行的SQL语句。
void escape (const char *asql, std::size_t asqllen, std::string &aoutsql)
 在将任意字节嵌入SQL文本之前进行转义处理。
bool select (const char *asql, std::size_t asqllen, const callback &aback)
 执行SELECT查询并通过回调处理结果集
bool stmt_query (const char *asql, std::size_t alen, MYSQL_BIND *abind)
 执行一条带绑定参数的预处理语句。

Public Attributes

db_buff m_malloc

Member Typedef Documentation

◆ callback

using ngl::nmysql::callback = std::function<bool(MYSQL_ROW, unsigned long*, my_ulonglong, my_ulonglong)>

执行一条查询并通过回调函数逐行流式处理结果。

Parameters
asqlSQL查询语句
asqllenSQL语句长度
aback结果行回调函数,参数为(行数据, 列长度, 当前行号, 总行数)
Returns
true 查询成功
false 查询失败

Member Function Documentation

◆ changedb()

bool ngl::nmysql::changedb ( MYSQL * amysql,
std::string & adbname )

在已有连接上切换活动数据库。

切换当前使用的数据库

Parameters
amysqlMySQL连接句柄
adbname目标数据库名称
Returns
true 切换成功
false 切换失败
Parameters
amysqlMySQL连接句柄
adbname目标数据库名
Return values
true切换成功
false切换失败

◆ closedb()

void ngl::nmysql::closedb ( )

关闭已存在的MySQL连接。

关闭MySQL数据库连接

调用mysql_close并重置连接状态标志。

◆ connectdb()

bool ngl::nmysql::connectdb ( const xarg_db & arg)

使用提供的XML配置打开一个MySQL连接。

建立MySQL数据库连接

Parameters
arg数据库连接参数(主机、端口、用户名、密码、数据库名)
Returns
true 连接成功
false 连接失败

初始化MySQL句柄、执行real_connect、设置自动重连和UTF-8字符集, 最后切换到指定数据库。

Parameters
arg数据库连接参数(IP、端口、用户名、密码、数据库名)
Return values
true连接成功
false连接失败(已有连接、初始化失败、认证失败或字符集设置失败)

◆ escape()

void ngl::nmysql::escape ( const char * asql,
std::size_t asqllen,
std::string & aoutsql )

在将任意字节嵌入SQL文本之前进行转义处理。

转义SQL字符串防止注入

Parameters
asql待转义的原始字符串
asqllen原始字符串长度
aoutsql输出参数,存储转义后的字符串

使用mysql_real_escape_string对输入进行转义。

Parameters
asql原始SQL字符串
asqllen原始字符串长度
aoutsql输出转义后的字符串,长度溢出时置为空

◆ query()

bool ngl::nmysql::query ( const char * asql,
std::size_t alen )

执行一条不返回行的SQL语句。

执行SQL命令(无结果集返回)

Parameters
asqlSQL语句字符串
alenSQL语句长度
Returns
true 执行成功
false 执行失败
Parameters
asqlSQL语句字符串
alenSQL语句长度
Return values
true执行成功
false执行失败(长度溢出或查询错误)

◆ select()

bool ngl::nmysql::select ( const char * asql,
std::size_t asqllen,
const callback & aback )

执行SELECT查询并通过回调处理结果集

使用mysql_real_query执行SQL后,通过mysql_store_result获取结果集, 遍历每一行调用回调函数传递行数据和列长度。

Parameters
asqlSQL查询语句
asqllenSQL语句长度
aback结果行回调,参数为(MYSQL_ROW, unsigned long*, 行数, 列数)
Return values
true查询并处理成功
false查询失败或无结果集

◆ stmt_query()

bool ngl::nmysql::stmt_query ( const char * asql,
std::size_t alen,
MYSQL_BIND * abind )

执行一条带绑定参数的预处理语句。

使用预处理语句执行参数化查询

Parameters
asql预处理SQL语句(含?占位符)
alenSQL语句长度
abindMYSQL_BIND参数绑定数组
Returns
true 执行成功
false 执行失败

依次执行mysql_stmt_init、prepare、bind_param和execute, 完成后关闭语句句柄。

Parameters
asql预处理SQL语句(含?占位符)
alenSQL语句长度
abindMYSQL_BIND参数绑定数组
Return values
true执行成功
false任何步骤失败

The documentation for this class was generated from the following files: