扩展C API
扩展API提供几种扩展或定制SQLite的基本方法,包括:创建用户自定义函数、聚合、排序规则和虚拟表,还可以在更底层实现一些方法,像虚拟文件系统,启动时可换的页缓存、内存分配和互斥的实现。
用户自定义函数是用户编写的用于特定应用的SQL函数,可以在SQL语句中调用他们。
聚合是一种特殊形式的函数,他与普通函数的工作方式基本相同,只是他对一组记录j进行操作并返回这一组记录中某个特定的字段的聚合值或表达式计算值,聚合函数可以从多个字段进行计算,而普通函数对单个记录进行操作。SQL中标准的聚合COUNT()、SUM()、AVG()。
排序规则是对文本进行比较和排序的方法。SQLite中默认的排序规则是BINARY,它通过memcmp()逐字节进行比较。仅适用于UTF-8编码。因此SQLite构建自定义排序规则以处理这些语言。
一、API
实现函数、聚合以及排序规则的基本方法都是使用回调函数,并在程序中注册,注册之后就可以在SQL中使用。函数和聚合使用相同的注册函数和类似的回调函数。虽然排序规则使用单独的注册函数,但是与函数和聚合的注册函数基本相同。
用户自定义聚合、函数和排序规则的生命周期是短暂的。他们是基于连续注册的,而且不存储在数据库中而是在程序中,需要确定用户已加载了定制并在连接中注册。扩展必须在每一个使用他们的连接上做。
1.注册函数
使用sqlite3_create_function()在连接中注册函数和聚合
函数:int sqlite3_create_function(sqlite3 *cnx, const char *zfunctionname, int narg, int etextrep, void *puserda