AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

Ein Thema von Blo · begonnen am 6. Jul 2019 · letzter Beitrag vom 6. Jul 2019
Antwort Antwort
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#1

Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

  Alt 6. Jul 2019, 11:00
Datenbank: SQLite • Version: 3.x • Zugriff über: FireDAC
Wir betreiben eine Datenbank-Anwendung (Delphi 10.3 Rio, Vcl, FireDAC, SQLite)

Folgendes ist uns aufgefallen (und nicht verstehen):

Die SQLite-Datenbank hat u.a. ein Feld mit dem Typ STRING(2). Wenn wir da z.B. „07“ abspeichern, die Tabelle wieder öffnen und das Feld auslesen (FieldByName().AsString) wird „7“ zurückgeliefert. In der Tabelle ist auch wirklich nur eine „7“ gespeichert (mit SQLManager nachgeprüft).

Wenn wir den Typ auf VARCHAR(2) für dieses Feld ändern, wird „07“ zurückgeliefert.

„07“ ist der richtige Wert, wird auch im weiteren Programmverlauf nicht in ein Zahlformat umgewandelt.
Ulrich Blomeyer

Geändert von Blo ( 6. Jul 2019 um 11:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

  Alt 6. Jul 2019, 13:56
Wie wird der String gespeichert? Der String sollte auch in Anführungszeichen gesetzt werden: "07"
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

  Alt 6. Jul 2019, 14:23
Durch Kopieren aus einer anderen Datenquelle:

qryZiel.FieldByName('ASD').asString:= qryQuelle.FieldByName('ASD').asString;
Ulrich Blomeyer
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

  Alt 6. Jul 2019, 14:55
sqlite hat ein etwas ungewöhnliches Verhalten, was die Spaltentypen und ihre Zuordnung / Werteinterpretation angeht. Im Grunde ist jedes DB System (oder auch Anwendung) der Problematik unterworfen, den Typ eines zu verarbeitenden Wertes zu bestimmen, jedenfalls in dem Moment, wo es nicht explizit im Code gehandhabt wird oder direkt ableitbar ist.
sqlite nennt das Type Affinity. Kannst du ja mal nachschlagen und schauen, ob sich Dein Problem damit erklären lässt.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Delphi FireDAC SQLite Typ VARCHAR(2) vs. STRING(2)

  Alt 6. Jul 2019, 15:57
Erklärungsversuch:
In dem ich schreibe "VARCHAR(2)" (Hier ist die Zeichenfolge "CHAR" enthalten) wird (die sogenannte) Säulenaffinität "TEXT" zugeordnet. Andernfalls ist die Affinität "NUMERIC". "STRING" benhaltet nicht die Zeichenfolge "CHAR" also auch "NUMERIC" als Säulenaffinität.

Also macht der Feldtyp "STRING" aus "07" eine "7".
Ulrich Blomeyer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz