Přejít na obsah


Fotka

SQL API


  • Pokud chcete vložit odpověď, přihlašte se
38 odpovědí na toto téma

#21 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 24 January 2011 - 21:24

HaLuMa napsal/a:
mimochodem, ja z toho sqlitemanageru ten BLOB ukladas? Ja na to nejak neprisel... :o

Dvojklik na řádek záznamu a pak v editačním okně záznamu disketka u blobu.
Ale musí být typu blob, jinak disketka není.
  • 0

LG G3 + a:Drake


#22 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 24 January 2011 - 21:27

HaLuMa napsal/a:
Zkus si na te tvoji databazi zavolat SQL prikaz: PRAGMA encoding;

Co ti to odpovedelo?


UTF-16le
  • 0

LG G3 + a:Drake


#23 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 24 January 2011 - 21:42

Bingo! ;) Jak jsi tu databazi vytvarel? Moje databaze ma totiz UTF-8, a databaze, ktere mi vytvorila dnes stahnuta verze MobileAtlasCreatoru ma take UTF-8. A pokud si dobre pamatuji, tak by UTF-8 mela byt i vychozi hodnota. A to je ten kamen urazu. Ten mu wrapper je totiz delany prave na UTF-8. Pro pouziti UTF-16 se u SQLite pouziva trosku jine API, a to v tom wrapperu nemam! Sqlite se totiz chova tak, ze kdyz zapisujes textovy string, tak se podiva, jestli kodovani databaze odpovida kodovani v predavanych datech. V mem pripade oboje souhlasi, takze necha data tak jak jsou. Jestlize ale nesouhlasi, prekoduje jej pri zapisu stringu z UTF-8 do UTF-16, a tim se to pomrsi. To je vlastne ten jediny rozdil pri zapisu do TEXT oproti BLOBu. (Je jedno jestli je cilove pole TEXT ci BLOB, prekodovava se proste textovy parametr...) Pokud data pak ctes pres BLOB, prectes tak pomrsena data, protoze jsou v pomrsenem stavu ulozena. Pokud bys je cetl jako TEXT, tak by se to sice pekne prekodovalo zpet, ale zmatou jej nulove znaky uvnitr a vrati ti jen cast dat. Takze problem zpusobuje nastavene kodovani v databazi. Pokud by tam bylo UTF-8, muj postup s textovym parametrem by fungoval.
  • 0

#24 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 24 January 2011 - 21:53

Já ji nedělal, dělal ji PocketDrake a jsou to mapy.cz, čili z MOBACu tato ani udělat nejde. Já s ní chci jenom zkusit pracovat. Tak to zkusím s nějakou z MOBACu, esli to bude jiný. Zatím moc díky, eště se určitě ozvu.
  • 0

LG G3 + a:Drake


#25 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 24 January 2011 - 22:02

Pokud ji delal pocketDrake, tak by urcite nebyl problem tu databazi vyrobit v UTF-8 kodovani, a bylo by po problemu. Soudil jsem, ze je to sice s daty v mapy.cz, ale format je obslehnuty z toho MOBACu, ne?
  • 0

#26 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 24 January 2011 - 22:05

To právě taky nechápu, to hned zjistíme :-) Jinak s databází z MOBACu a UTF-8 už jsem vyexportoval soubor vpohodě!! Jestli se povede i ten zápis přes parametrasblob, tak to bude OK. Díky moc.
  • 0

LG G3 + a:Drake


#27 LudekV

LudekV

    Advanced Member

  • Members
  • PipPipPip
  • 2166 příspěvků(y)

Publikováno 24 January 2011 - 22:19

Já se v PD s kódováním netrápil, protože pracuju s blobem, ne se stringem, takže je to bez problému. Použitá knihovna má zřejmě výchozí UTF-16, takže tam přihodím PRAGMA encoding = "UTF-8" a uvidíme.
  • 0

a : Drake - vše potřebné pro (offline) geocaching na Android * Stránka projektu na GitHubu - požadavky a reklamace

Hlavní kešovací zažízení: Samsung Galaxy A41


#28 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 04 March 2011 - 22:28

Lze nějak zjistit délku řetězce, který obsahuje binární data? Zatím mě napadá pouze uložit ho na disk a pak použít GetFileSize, ale to je dost nepraktický a pomalý.
  • 0

LG G3 + a:Drake


#29 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 04 March 2011 - 22:34

Jako retezcove promenne? i := length(retezec) Nebo myslis v SQL?
  • 0

#30 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 04 March 2011 - 22:49

Ve stringu mam ulozeny bin data (obrazek) z SQL tabulky. Length mi právě nefunguje, zřejmě ji binární data ve stringu zblbnou, vrací to moc malý hodnoty.
  • 0

LG G3 + a:Drake


#31 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 04 March 2011 - 23:27

Tak Length opravdu funguje, problém je už někde dřív při čtení bin. dat z SQL, nějak se mi nedaří do toho stringu načíst celý bin. data. Budu pátrat dál, čtu to takhle, což si myslím, že mi dřív chodilo: str := db.GetTableString('SELECT image FROM table WHERE xxxxxxx');
  • 0

LG G3 + a:Drake


#32 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 04 March 2011 - 23:39

HaLuMa napsal/a:
Pokud data pak ctes pres BLOB, prectes tak pomrsena data, protoze jsou v pomrsenem stavu ulozena. Pokud bys je cetl jako TEXT, tak by se to sice pekne prekodovalo zpet, ale zmatou jej nulove znaky uvnitr a vrati ti jen cast dat.


Možná to je tento problém, o kterém jsi už psal, ale já bych se skoro vsadil, že mi to dřív přečíst šlo i jako text, možná se ale pletu.
  • 0

LG G3 + a:Drake


#33 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 05 March 2011 - 8:02

V dalsi verzi GG uz muzes cist ten blob jako blob. Ted musis mit databazi nastavenou na UTF-8 kodovani, jinak tam za teto situace nastoupi konverze, ktere to pomrsi.
  • 0

#34 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 05 March 2011 - 18:12

Zápis do databáze mi při dodržení UTF-8 jde, ale to čtení asi nelze použít ať je UTF jakýkoliv. Počkám na novou verzi. Díky!
  • 0

LG G3 + a:Drake


#35 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 05 March 2011 - 18:59

tentokrate jsem nezapomnel, vyvojova verze to ma uz v sobe. neboj!
  • 0

#36 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 14 March 2011 - 19:02

Můžu poprosit o popis nových metod pro práci s blobem? AddParamBlob a jestli je taky něco pro čtení (GetTableBlobAsString?) Díky.
  • 0

LG G3 + a:Drake


#37 HaLuMa

HaLuMa

    Autor Geogetu

  • Members
  • PipPipPip
  • 14524 příspěvků(y)

Publikováno 17 March 2011 - 22:32

Byl aktualizovan help k SqliteWrapperu: http://geoget.ararat...help/index.html

pro zapis BLOBu tam jsou funkce:

procedure AddParamBlobPtr(const name: String; buffer: pointer; len: integer);
procedure AddParamBlobText(const name: String; const value: AnsiString);
procedure AddParamBlob(const name: String; const value: TStream; len: integer);

A pro cteni:
function FieldAsBlob(I: cardinal): TMemoryStream;
function FieldAsBlobPtr(I: cardinal; out iNumBytes: integer): Pointer;
function FieldAsBlobText(I: cardinal): AnsiString;

Jo, a mimochodem, uz by mely jit zavadet ty extension DLL. ;)
  • 0

#38 Subi

Subi

    Šubi

  • Members
  • PipPipPip
  • 447 příspěvků(y)

Publikováno 19 March 2011 - 20:25

Díky, zkusil jsem BlobText a funguje čtení i zápis :-)
  • 0

LG G3 + a:Drake


#39 Pe_Bo

Pe_Bo

    Advanced Member

  • Members
  • PipPipPip
  • 613 příspěvků(y)

Publikováno 20 March 2011 - 7:48

Potvrzuji: extension dll lze zavést. Paráda, díky!
  • 0




1 uživatel(ů) prochází toto téma

0 uživatelů, 1 návštěvníků 0 anonymních uživatelů

Reklama