int sqlite3_collation_needed( sqlite3 *, 空白*, void(*)(void *,sqlite3 *,int eTextRep,const char *) ); int sqlite3_collation_needed16( sqlite3 *, 空白*, void(*)(void *,sqlite3 *,int eTextRep,const void *) );
为了避免在使用数据库之前必须注册所有排序规则序列,只要需要未定义的排序规则序列,就可以在要调用的数据库连接中注册一个回调函数 。
如果使用sqlite3_collation_needed()API注册了该函数,则会将未定义的排序规则序列的名称传递为以UTF-8编码的字符串。如果使用sqlite3_collation_needed16(),则名称将以机器本机字节顺序作为UTF-16传递。调用这两个函数将替换现有的归类所需的回调。
调用回调时,传递的第一个参数是第二个参数到sqlite3_collation_needed()或sqlite3_collation_needed16()的副本。第二个参数是数据库连接。第三个参数是SQLITE_UTF8,SQLITE_UTF16BE或SQLITE_UTF16LE之一,指示所需的排序规则序列函数的最理想形式。第四个参数是所需排序规则序列的名称。
回调函数应使用sqlite3_create_collation(),sqlite3_create_collation16()或 sqlite3_create_collation_v2()注册所需的排序规则 。