Databáze > Ostatní DB

SQLite + FireDAC vkladanie textu UTF8 bez konverzie ?

<< < (2/2)

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