acl  3.5.3.0
acl_dbsql.h 文件参考
#include "../stdlib/acl_define.h"
#include "acl_dbpool.h"
+ acl_dbsql.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ACL_DB_ATOU(_str_)   (_str_ ? strtoul(_str_, (char **) NULL, 10) : 0)
 

函数

ACL_API ACL_SQL_RESacl_dbsql_select (ACL_DB_HANDLE *handle, const char *sql, int *error)
 
ACL_API void acl_dbsql_free_result (ACL_DB_HANDLE *handle, ACL_SQL_RES *res)
 
ACL_API int acl_dbsql_results (ACL_DB_HANDLE *handle, const char *sql, int *error, int(*walk_fn)(const void **result_row, void *arg), void *arg)
 
ACL_API int acl_dbsql_result (ACL_DB_HANDLE *handle, const char *sql, int *error, int(*walk_fn)(const void **result_row, void *arg), void *arg)
 
ACL_API int acl_dbsql_update (ACL_DB_HANDLE *handle, const char *sql, int *error)
 

宏定义说明

◆ ACL_DB_ATOU

#define ACL_DB_ATOU (   _str_)    (_str_ ? strtoul(_str_, (char **) NULL, 10) : 0)

在文件 acl_dbsql.h14 行定义.

函数说明

◆ acl_dbsql_free_result()

ACL_API void acl_dbsql_free_result ( ACL_DB_HANDLE handle,
ACL_SQL_RES res 
)

释放由 acl_dbsql_select 返回的结果集对象

参数
handle{ACL_DB_HANDLE*} 数据库连接句柄,不能为空
res{ACL_SQL_RES*} acl_dbsql_select 返回的结果对象,不能为空

◆ acl_dbsql_result()

ACL_API int acl_dbsql_result ( ACL_DB_HANDLE handle,
const char *  sql,
int *  error,
int(*)(const void **result_row, void *arg)  walk_fn,
void *  arg 
)

以回调的方式从数据库中查询一条记录,查询结果通过用户设置的回调函数返回给用户

参数
handle{ACL_DB_HANDLE*} 数据库连接句柄,不能为空
sql{const char*} select 查询语句,不能为空
error{int*} 如果返回值 -1 且该变量非空指针则该指针的地址被 赋予出错的错误号,错误号参见 acl_dberr.h
walk_fn{int (*)(const void**, void*)},用户设置的查询结果回调函数, 非空,当查到一条符合条件的结果时便回调用该回调函数,与 acl_dbsql_results 不 同,该回调函数最多只会被调用一次,其中的 result_row 是一个数组指针,用户可 以在自己的回调函数里用 result_row[i] 来取得自己所要求的数据列(必须与 select 语句中的相匹配)
arg{void*} 用户自定义的参数,该参数会自动传递给 walk_fn 回调函数, 作为 walk_fn 的最后一个参数返回
返回
{int} 返回值只有三种状态,-1 表示查询语句失败,0 表示查询结果为空, 1 表示查到一个结果;如果返回 -1 则 *error 记录着失败原因,参见 acl_dberr.h

◆ acl_dbsql_results()

ACL_API int acl_dbsql_results ( ACL_DB_HANDLE handle,
const char *  sql,
int *  error,
int(*)(const void **result_row, void *arg)  walk_fn,
void *  arg 
)

以回调的方式查询数据库中所有符合条件的结果集,查询结果集合通过用户设置 的回调函数返回给用户

参数
handle{ACL_DB_HANDLE*} 数据库连接句柄,不能为空
sql{const char*} select 查询语句,不能为空
error{int*} 如果返回值 -1 且该变量非空指针则该指针的地址被 赋予出错的错误号,错误号参见 acl_dberr.h
walk_fn{int (*)(const void**, void*)},用户设置的查询结果回调函数, 非空,每查一条符合条件的结果都回调用该回调函数,如果查询结果为多条,则会 自动回调多次该回调函数,其中的 result_row 是一个数组指针,用户可以在自己 的回调函数里用 result_row[i] 来取得自己所要求的数据列(必须与 select 语句 中的相匹配)
arg{void*} 用户自定义的参数,该参数会自动传递给 walk_fn 回调函数, 作为 walk_fn 的最后一个参数返回
返回
{int} 查询结果总数,如果返回 -1 则表示查询语句失败,0 表示没有符合 查询条件的结果,> 0 表示查询的结果总数

◆ acl_dbsql_select()

ACL_API ACL_SQL_RES* acl_dbsql_select ( ACL_DB_HANDLE handle,
const char *  sql,
int *  error 
)

数据库查询语句,根据用户输入的 select SQL 语句从数据库里查询结果

参数
handle{ACL_DB_HANDLE*} 数据库连接句柄,不能为空
sql{const char*} select 查询语句,不能为空
error{int*} 如果返回值 NULL 且该变量非空指针则该指针的地址被 赋予出错的错误号,错误号参见 acl_dberr.h
返回
{ACL_SQL_RES*} 查询结果集,如果查询失败或查询结果为空,则返回 NULL,否则返回 ACL_SQL_RES 对象(用完后该结果需要调用 acl_dbsql_free_result 释放),示例:

ACL_DB_HANDLE* handle = ...; ACL_SQL_RES* res = acl_dbsql_select(...); ACL_ITER iter; if (res) { acl_foreach(iter, res) { const char my_row = (const char) iter.data; printf("first item: %s\n", my_row[0]); ... } acl_dbsql_free_result(handle, res); }

◆ acl_dbsql_update()

ACL_API int acl_dbsql_update ( ACL_DB_HANDLE handle,
const char *  sql,
int *  error 
)

更新数据库数据,update, insert, delete 等修改数据库的操作可以使用该函数

参数
handle{ACL_DB_HANDLE*} 数据库连接句柄,不能为空
sql{const char*} 数据库修改语句,不能为空
error{int*} 如果返回值 -1 且该变量非空指针则该指针的地址被 赋予出错的错误号,错误号参见 acl_dberr.h
返回
{int} 返回值只有三种状态,-1 表示失败(如果 error 指针非空则其中记录着 出错原因,错误号参见: acl_dberr.h),0 表示更新成功,但并未影响数据库原始信息 (原因是本信息与数据库原信息相同),> 0 表示更新了数据库中数据存储条数