加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite学习笔记(9)

发布时间:2020-12-12 20:26:14 所属栏目:百科 来源:网络整理
导读:扩展 C API 实现函数、聚合、排序的基本方法是使用回调函数,并在程序中注册,然后在SQL中使用。 函数和聚合使用相同的注册函数和类似的回调函数。用户自定义聚合、函数和排序规则的生命周期是很短的,基于连接注册,不存储在数据库中,需要确保应用程序夹杂

扩展 C API

实现函数、聚合、排序的基本方法是使用回调函数,并在程序中注册,然后在SQL中使用。

函数和聚合使用相同的注册函数和类似的回调函数。用户自定义聚合、函数和排序规则的生命周期是很短的,基于连接注册,不存储在数据库中,需要确保应用程序夹杂了定制扩展并在连接中注册。

扩展必须在每一个使用它们的连接上注册。

注册函数:

可以使用sqlite3_create_function()在连接中注册和聚合。(UTF-8和UTF-16版本)

int sqlite3_create_function(

sqlite * cnx,/*连接句柄*/

const char *zFunctionName,/*在sql语句中使用的函数聚合名称*/

int nArg,/*参数的格式,-1表示参数的个数不稳定*/

int eTextRep,/*编码格式*/

void *pUserData,/*传递个回调函数的应用程序数据*/

void ( *xFunc )(sqlite3_context *,int,sqlite3_value * ),

void ( *xStep)(sqlite3_context *,

void ( *xFinal)(sqlite3_context *,sqlite3_value * )

);

int sqlite3_create_function16(

sqlite * cnx,sqlite3_value * )

);



步骤函数:

他和自定义函数的回调函数一样声明如下:

void fn(

sqlite3_context * ctx,/*聚合的上下文环境,接受sqlite3_create_function()提供的应用程序数据参数*/

int nargs,/*包含传递给函数的参数个数*/

sqlite3_value **values

);

可以使用sqlite3_user_data()获得用户数据:void *sqlite3_user_data(sqlite3_context * ) ;

聚合通过sqlite3_aggregate_context()为每个实例分配状态: void *sqlite3_aggregate_context( sqlite3_context *,int nBytes);


返回值:

参数value是sqlite3_value结构体数组,是SQLite实际参数值的句柄。这些值的实际数据可以通过sqlite3_value_xxx()获取:

xxx sqlite3_value_xxx(sqlite3_value* value) ;

注意他获取标量值和数组值的方式。

函数返回值五种形式。

函数:page221.

返回值:page222;



数组与内存清理器、错误处理、返回输入值、聚合、注册函数。

注意排序规则的定义等等。


扩展的许多规则和原来核心API的工作、定义基本一样。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读