Databáze > Ostatní DB
SQLite + FireDAC vkladanie textu UTF8 bez konverzie ?
100464:
--- Citace: Miroslav Baláž 03-07-2018, 13:26:26 ---Vezmime predpoklady:
1. SQLite engina ma nastaveny sposob ukladania textu ako UTF8
2. V Delphi pracujem priamo s UTF8 / AnsiStringami / PAnsiChar
Vysledok:
NIE JE znama cesta, ako dostat UTF8 text bez konverzie do SQLite ?
Je ta konverzia dost rychla / zanedbatelna, ak hovorime radovo o 100-kach MB dat?
--- Konce citace ---
Cesta bez konverze existuje. Mohl bys zavolat funkci sqlite3_bind_text64 a specifikovat enkodovani SQLITE_UTF8. FireDAC ji nepouziva, ten posila data vzdy ve forme Unicode pres sqlite3_bind_text (viz. metoda TSQLiteBind.InternalSetData).
Zda je konverze rychla. Bez mereni a porovnani tezko rict. Nicmene pri pouziti AsString accessoru (u parametru nebo pole typu ftWideString), dojde jen k te implicitni konverzi (z UTF8String nebo AnsiString na UnicodeString).
miroB:
Ďakujem. Toto som určite nevedel. Uvidím, ako to pôjde v praxi. Ak by to bolo moc pomalé, spravil by som test. Zavesím ho sem, až keď by k testu došlo.
Vidím, že sqlite3_bind_text64 je odkazovaný vo FireDAC.Phys.SQLiteCli.pas
100466:
--- Citace: Miroslav Baláž 03-07-2018, 15:59:29 ---Vidím, že sqlite3_bind_text64 je odkazovaný vo FireDAC.Phys.SQLiteCli.pas
--- Konce citace ---
Tam jsou prototypy funkci. V poli Fsqlite3_bind_text64 objektu TSQLiteLib by mela byt nactena i adresa (pokud je verze SQLite alespon 3.8.7, kdy byla do SQLite pridana). Ber v potaz fakt ze pokud ji budes volat z metody TSQLiteBind.InternalSetData, data predane parametru nebo poli budou diky te implicitni konverzi v tomto miste UnicodeString.
Navigace
[0] Seznam témat
[*] Předchozí strana
Přejít na plnou verzi