Nee, het "keert niet terug" naar string, SQlite slaat de gegevens gewoon op zoals deze worden verstrekt.
Zoals in de documentatie staat :
Als u een tekstwaarde opgeeft/bindt, zou deze een tekstwaarde opslaan. Er is geen conversie naar het type geleverd in de CREATE TABLE-instructie, omdat het mogelijk verschijnen in andere, meer strikte RBMS, b.v. MijnSQL.
Dus in jouw geval, als je de gegevens ophaalt als ftWideString
, Ik denk dat dit komt omdat je de gegevens als TEXT hebt geschreven. De tool of het programma dat de SQLite3-inhoud van uw MySQL maakt, schrijft deze kolom bijvoorbeeld als TEXT.
Wat betreft getallen, er is geen "signed"/"unsigned", noch precisiecontrole in SQLite3. Dus als u "unsigned big int"-waarden wilt opslaan, gebruikt u gewoon INTEGER, dit is Int64.
Maar in alle gevallen, zelfs als SQLite3 API NIET-ONDERTEKENDE 64-bits gehele getallen ondersteunt
, deze sqlite3_uint64
type wordt mogelijk nauwelijks ondersteund door de Zeos/ZDBC API of door Delphi (oudere versies van Delphi ondersteunen GEEN UInt64). Om zeker te zijn, kunt u beter dergelijke waarden ophalen als TEXT en deze vervolgens converteren als UInt64
handmatig in uw Delphi-code.
Bijwerken:
Gebruik je de TDataSet
afstammeling geleverd door Zeos? Dit onderdeel is gekoppeld aan DB.Pas
, dus verwacht één type per kolom. Het kan de bron van verwarring zijn van uw code (die u helemaal niet hebt laten zien, dus het is moeilijk om erachter te komen wat er gebeurt).
U kunt beter de ZDBC-interface op een lager niveau gebruiken, waarmee u het kolomtype voor elke rij kunt ophalen en de waarde-gettermethode kunt aanroepen als u dat wilt.