#include <db_handle.hpp>
数据库操作句柄对象类型
在文件 db_handle.hpp 第 254 行定义.
◆ db_handle()
acl::db_handle::db_handle |
( |
void |
| ) |
|
◆ ~db_handle()
virtual acl::db_handle::~db_handle |
( |
void |
| ) |
|
|
virtual |
◆ affect_count()
virtual int acl::db_handle::affect_count |
( |
| ) |
const |
|
pure virtual |
◆ begin_transaction()
virtual bool acl::db_handle::begin_transaction |
( |
void |
| ) |
|
|
inlinevirtual |
◆ close()
virtual bool acl::db_handle::close |
( |
| ) |
|
|
pure virtual |
◆ commit()
virtual bool acl::db_handle::commit |
( |
void |
| ) |
|
|
inlinevirtual |
◆ dbopen()
virtual bool acl::db_handle::dbopen |
( |
const char * |
charset = NULL | ) |
|
|
pure virtual |
◆ dbtype()
virtual const char* acl::db_handle::dbtype |
( |
| ) |
const |
|
pure virtual |
◆ empty()
bool acl::db_handle::empty |
( |
| ) |
const |
查询(sql_select)执行完后结果是否为空
- 返回
- {bool} 返回 true 表示查询结果为空
◆ escape_string()
virtual string& acl::db_handle::escape_string |
( |
const char * |
in, |
|
|
size_t |
len, |
|
|
string & |
out |
|
) |
| |
|
virtual |
虚接口,为防止 sql 注入,用户应针对字符串字段调用此函数将一些特殊 字符进行转义,该接口对常见的特殊字符进行了转义,子类也可以实现自己 的转义方法
- 参数
-
in | {const char*} 输入字符串 |
len | {size_t} 字符串长度 |
out | {string&} 存储转换结果 |
- 返回
- {string&} 子类应该返回输入的缓冲区的引用,以便于用户在拼接 SQL 的时候比较方便
◆ exec_select()
bool acl::db_handle::exec_select |
( |
query & |
query, |
|
|
db_rows * |
result = NULL |
|
) |
| |
更安全易用的查询过程,调用此函数功能等同于 sql_select,只是查询 对象 query 构建的 sql 语句是安全的,可以防止 sql 注入,该方法 执行 SELECT SQL 语句
- 参数
-
query | {query&} |
result | {db_rows*} 如果非空,则将查询结果填充进该结果对象中, 否则,会引用 db_handle 内部的一个临时存储对象 |
- 返回
- {bool} 执行是否成功
◆ exec_update()
bool acl::db_handle::exec_update |
( |
query & |
query | ) |
|
更安全易用的更新过程,调用此函数功能等同于 sql_update,只是查询 对象 query 构建的 sql 语句是安全的,可以防止 sql 注入,该方法 执行 INSERT/UPDATE/DELETE SQL 语句
- 参数
-
- 返回
- {bool} 执行是否成功
◆ free_result()
void acl::db_handle::free_result |
( |
| ) |
|
释放上次查询的结果,当查询完成后,调用该函数来释放上次查询的结果,该函数被 多次调用并无害处,因为当第一次调用时会自动将内部变量 result_ 置空, 另外,要求子类必须在每次执行 SQL 查询前先调用此方法,以免用户忘记 调用而造成内存泄露;此外,本类对象在析构时会自动再调用本方法释放可能 未释放的内存
◆ get_errno()
virtual int acl::db_handle::get_errno |
( |
void |
| ) |
const |
|
inlinevirtual |
◆ get_error()
virtual const char* acl::db_handle::get_error |
( |
void |
| ) |
const |
|
inlinevirtual |
◆ get_first_row()
const db_row* acl::db_handle::get_first_row |
( |
| ) |
const |
获得执行 SQL 语句后的第一行结果,针对唯一键的数据查询比较方便
- 返回
- {const db_row*} 返回空表示查询结果为空,否则, 则必须调用 free_result() 函数来释放中间的结果内存,否则会引起内存泄露
◆ get_id()
const char* acl::db_handle::get_id |
( |
| ) |
const |
|
inline |
◆ get_loadpath()
static const char* acl::db_handle::get_loadpath |
( |
| ) |
|
|
static |
当设置了动态库的动态加载全路径时,可以通过本函数获得动态库加载全路径
- 返回
- {const char*} 当未设置时则返回 NULL
◆ get_result()
const db_rows* acl::db_handle::get_result |
( |
| ) |
const |
获得执行 SQL 语句后的结果
- 返回
- {const db_rows*},返回结果若非空,则用完后需要调用 free_result() 以释放结果对象
◆ get_rows() [1/2]
const std::vector<const db_row*>* acl::db_handle::get_rows |
( |
const char * |
name, |
|
|
const char * |
value |
|
) |
| |
从查询的行记录集合中根据表字段名对应的字段值取出结果记录集合
- 参数
-
name | {const char*} 数据表字段名(不区分大小写) |
value | {const char*} 数据表字段值(区分大小写) |
- 返回
- {const std::vector<const db_row*>*} 返回行记录集合类型对象, 若返回结果集非空,则必须调用 free_result() 以释放结果对象
◆ get_rows() [2/2]
const std::vector<db_row*>* acl::db_handle::get_rows |
( |
| ) |
const |
取得所有的查询结果集
- 返回
- {const std::vector<db_row*>*} 返回行记录集合类型对象, 若返回结果集非空,则必须调用 free_result() 以释放结果对象
◆ get_when()
time_t acl::db_handle::get_when |
( |
| ) |
const |
|
inline |
◆ is_opened()
virtual bool acl::db_handle::is_opened |
( |
| ) |
const |
|
pure virtual |
◆ length()
size_t acl::db_handle::length |
( |
| ) |
const |
取得查询(sql_select)结果的行记录数
- 返回
- {size_t} 结果行记录数,若为 0 则表示结果为空
◆ open()
bool acl::db_handle::open |
( |
| ) |
|
|
virtual |
◆ operator[]()
const db_row* acl::db_handle::operator[] |
( |
size_t |
idx | ) |
const |
获得某个对应下标值的行记录
- 参数
-
idx | {size_t} 下标值,必须小于查询结果的总数 |
- 返回
- {const db_row*} 结果,如果为空,则有可能是下标越界, 也有可能是结果为空
◆ print_out()
void acl::db_handle::print_out |
( |
size_t |
max = 0 | ) |
const |
输出数据库查询结果
- 参数
-
max | {size_t} 输出至屏幕的行记录数的最大值限制,如果该值为 0 则输出所有的结果集 |
◆ rollback()
virtual bool acl::db_handle::rollback |
( |
void |
| ) |
|
|
inlinevirtual |
◆ set_id()
db_handle& acl::db_handle::set_id |
( |
const char * |
id | ) |
|
◆ set_loadpath()
static void acl::db_handle::set_loadpath |
( |
const char * |
path | ) |
|
|
static |
当采用动态加载方式加载动态库时,可以使用此函数设置动态库的加载全路径
◆ set_when()
db_handle& acl::db_handle::set_when |
( |
time_t |
now | ) |
|
◆ sql_select()
virtual bool acl::db_handle::sql_select |
( |
const char * |
sql, |
|
|
db_rows * |
result = NULL |
|
) |
| |
|
pure virtual |
纯虚接口,子类必须实现此接口用于执行 SELECT SQL 语句
- 参数
-
sql | {const char*} 标准的 SQL 语句,非空,并且一定得要注意该 SQL 语句必须经过转义处理,以防止 SQL 注入攻击 |
result | {db_rows*} 如果非空,则将查询结果填充进该结果对象中, 否则,会引用 db_handle 内部的一个临时存储对象 |
- 返回
- {bool} 执行是否成功
在 acl::db_sqlite, acl::db_mysql , 以及 acl::db_pgsql 内被实现.
◆ sql_update()
virtual bool acl::db_handle::sql_update |
( |
const char * |
sql | ) |
|
|
pure virtual |
◆ tbl_exists()
virtual bool acl::db_handle::tbl_exists |
( |
const char * |
tbl_name | ) |
|
|
pure virtual |
◆ id_
char* acl::db_handle::id_ |
|
protected |
◆ result_
◆ when_
time_t acl::db_handle::when_ |
|
protected |
该类的文档由以下文件生成: