С помощью некоторых руководств я успешно скомпилировал расширение ICU для sqlite3 с помощью gcc и получил libSqliteIcu.so, без единой ошибки. Затем я скопировал этот lib в папку / usr / lib. После этого я запускаю sqlite через терминал и ".load libSqliteIcu.so", а затем "icu_load_collation (" hr_HR "," CROATIAN ");" все без ошибок или замечаний на терминале. Результаты запросов теперь правильно сортируются.
Что мне теперь делать, чтобы использовать хорватскую сортировку через c-api?
Я пытаюсь:
sqlite3_stmt *selStmt;
const char *zSqlSelect = "SELECT sif, name, kat FROM mytable WHERE naziv LIKE 'mala%' ORDER BY naziv COLLATE CROATIAN;";
if (sqlite3_prepare_v2(db, zSqlSelect, -1, &selStmt, NULL) == SQLITE_OK )
{
int cols = sqlite3_column_count(selStmt);
int result = 0;
while(true)
{
result = sqlite3_step(selStmt);
if(result == SQLITE_ROW)
{
for(int col = 0; col < cols; col++)
{
printf("%s %s \t", sqlite3_column_name(selStmt,col), "=");
printf("%s\n", sqlite3_column_text(selStmt, col));
}
}
else break;
}
sqlite3_finalize(selStmt);
}
else
printf("db error: %s\n", sqlite3_errmsg(db));
Сообщение об ошибке: «db error: нет такой последовательности сортировки: CROATIAN».
Что мне не хватает и как получить правильную сортировку sqlite3 по заданному сопоставлению через c-api, как я получаю через командную строку?