Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno SQLite - Vlastné triedenie

Na stránke create_collation.html je popis ako nadefinovať vlastné triedenie do SQLite. Horšie je, že nerozumiem ako na to. Predpokladám, že priamo v databáze to neviem nastaviť a musím to spraviť programovo. Potrebujem to urobiť v Lazarovi. Akým spôsobom si zaregistrujem tieto vlastné funkcie? Dá sa to vôbec v Lazarovi?

Předmět Autor Datum
Tohle je podle mne interface k DLL. Musis napsat DLL a v ni exportovat tyto funkce. To muzes i v Laz…
Jan Fiala 24.09.2013 14:27
Jan Fiala
Aha, takže toto už pre mňa také jednoduché nebude. To aby som sa začal učiť výrobu DLL.
msx. 24.09.2013 15:38
msx.
Urcite nejsi prvni, kdo to delal. Pri trose snahy bys mel na internetu najit zdrojaky
Jan Fiala 24.09.2013 16:49
Jan Fiala
Aj to som už skúšal, len zrejme nezadávam nič vhodné do Google.
msx. 24.09.2013 16:51
msx.
Podarilo sa mi nájsť SQLite s ICU, lenže ak budem s databázou narábať s externým nástrojom, tak to n…
msx. 24.09.2013 18:52
msx.
No nič, asi to skúsim sám. Vedel by si ma prosím nasmerovať ako nazvať DLL súbor, aby s ním SQLite p…
msx. 25.09.2013 15:17
msx.
cintro.html All of the built-in SQL functions of SQLite are created using exactly these same interf…
Jan Fiala 25.09.2013 15:58
Jan Fiala
Nakoniec som predsa len skončil pri ICU. Mám stiahnuté aktuálne SQLite a ICU, ale neviem to dať doko…
msx. 25.09.2013 17:42
msx.
Robil som to takto: Spustil som Code::Blocks, tam som otvoril zdroják SQLite a skúšobne som dal hneď…
msx. 25.09.2013 22:09
msx.
Keďže mi to nedalo pokoja a ďalej som sa v tom vŕtal, podarilo sa mi problém vyriešiť. Tu je riešeni… poslední
msx. 25.09.2013 23:45
msx.

Podarilo sa mi nájsť SQLite s ICU, lenže ak budem s databázou narábať s externým nástrojom, tak to nemusí nakoniec fungovať. Ideálne by bolo, keby to triedenie funguje priamo, keď aj natvrdo. Ale zatiaľ som nič vhodné nenašiel.

Nakoniec som predsa len skončil pri ICU. Mám stiahnuté aktuálne SQLite a ICU, ale neviem to dať dokopy. Prepokladám, že kompilovať nemusím nič, keďže som stiahol priamo binárky.

Doplnené: Takže kompilovať pravdepodobne musím, ale nedarí sa mi. Skúsil som to cez Code::Blocks, ale neúspešne.

Robil som to takto:
Spustil som Code::Blocks, tam som otvoril zdroják SQLite a skúšobne som dal hneď kompiláciu. Vyhodilo mi to chybu v nejakej includovanej knižnici z MinGW. Táto koémpilácia cudzích projektov bola pre mňa vždy španielska dedina. Na internete som nejaké SQLite s ICU aj našiel, ale v Lazarovi mi neberie nastavenie collation cez SQL príkaz SELECT. Možno niečo robím špatne, ale neviem čo. Ak by mi s tým niekto vedel poradiť, bol by som mu veľmi vďačný. Nechápem prečo SQLite rovno nevydávajú v dvoch verziách. S ICU a bez ICU.

Doplnené:
SQLite s ICU mám odtiaľto:
forum#!topic/web2py/Q_5i1tozCDM

Ale neviem to rozchodiť.

Keďže mi to nedalo pokoja a ďalej som sa v tom vŕtal, podarilo sa mi problém vyriešiť. Tu je riešenie:

Na stránke Google Groups sa dá preklikať na download SQLite kompiláciu s ICU:
pagesqliteicu.html

Lenže mne to nefungovalo. Dôvod bol ten (ako som neskôr zistil pomocou nástroja depends, že úplne posledný download (najvyššie s najnovšími verziami) zrejme kvôli chybe autora neobsahuje SQLite naviazané na ICU, ale len čisté SQLite a ICU je k tomu len pribalené. Treba stiahnuť staršiu kompiláciu. Ja som stiahol tú najstaršiu. Potom je treba stiahnuť kompiláciu ICU pre Windows z ICU stránky a doložiť súbor icudt38.dll. Potom po ovorení databázy treba zadať SQL príkaz:
SELECT icu_load_collation('sk_SK', 'slovak');

A samotné triedenie musí na konci ORDER klauzuly obsahovať:
COLLATE slovak

Toto síce nie je nutné, ale len vtedy, ak je tabuľka už vytvorená so správnym COLLATE, lenže tam by zrejme hrozila nekompatibilita s ostatnými klientmi.

Zpět do poradny Odpovědět na původní otázku Nahoru