sqlite.h


Retrollamada de cotejo requerido

int sqlite3_collation_needed(
  sqlite3*, 
  void*, 
  void(*)(void*,sqlite3*,int eTextRep,const char*)
);
int sqlite3_collation_needed16(
  sqlite3*, 
  void*,
  void(*)(void*,sqlite3*,int eTextRep,const void*)
);

Para evitar tener que registrar antes todas las secuencias de comparación para que una base de datos las pueda usar, se puede registrar una única función de retrollamada para la conexión de base de datos que será invocada cada vez que se requiera una secuencia de comparación no definida.

Si la función es registrada usando la función sqlite3_collation_needed(), entonces se pasarán los nombres de las secuencias de comparación no definidas como cadenas codificadas en UTF-8. Si se usa sqlite3_collation_needed16(), los nombres se pasan en UTF-16 en el orden de bytes nativo de la máquina. Una llamada a cualquiera de estas funciones sustituye la retrollamada actual.

Cuando una retrollamada es invocada, el primer argumento pasado es una copia del segundo argumento a sqlite3_collation_needed() o sqlite3_collation_needed16(). El segundo argumento es la conexión de la base de datos. El tercer argumento es uno de los valores SQLITE_UTF8, SQLITE_UTF16BE o SQLITE_UTF16LE, indicando la forma más deseable para la función de la secuencia de ordenación requerida. El cuarto parámetro es el nombre de la secuencia de comparación requerida.

La función de retrollamada debe registrar la secuencia de comparación deseada usando sqlite3_create_collation(), sqlite3_create_collation16() o sqlite3_create_collation_v2().