German Eine Spalte aus Tabelle einlesen

rboeck

Well-Known Member
Licensed User
Longtime User
Was eine ungewöhnliche Sache von SQLite ist: eine normale Datenbank deklariert den Datentyp eine Spalte und alle Eingaben und Abfragen werden automatisch auf diesen Datentyp konvertiert. Hier ist Sqlite komplett anders: Du kannst einen Integer Wert beim Erzeugen der Tabelle vorgeben, wenn du später einen String Wert speichest, ist der als String Wert gespeichert und kommt nur dann wieder zum Vorschein, wenn Du String Werte abfrägst. Auf die Schliche kommst Du solchen Problemen, wenn Du eine Abfrage sortiert ausgibst. Da gibt es dann eine festgelegte Reihenfolgen: zuerst Integer, dann String oder so ähnlich. Der langen Rede kurzer Sinn: Abfragen laufen nur dann, wenn Du den richtigen Datentyp gewählt hast. Eigentlich logisch, aber andere Datenbanken verzeihen diese kleinen 'Schlampereien', SQLite nicht...

Reinhard
 

derMartin

Member
Licensed User
Longtime User
Oha..... Gut zu wissen. Bin seit gestern dabei was es SQLite angeht. Bisher nur mit Access gearbeitet...... Danke.
 

DonManfred

Expert
Licensed User
Longtime User
"Alter" ist ein reserviertes Wort. "To alter a table..."
zumindest ist es ein reserviertes Wort in MySQL. Ich tippe darauf das es bei SQLite ebenfalls so ist.
 

derMartin

Member
Licensed User
Longtime User
Das erklärt auch das sofortige Funktionieren beim ändern nach BenAlter ..... Nur komisch das es im SQLite Manager geht. Aber okay, wieder was gelernt.
 

DonManfred

Expert
Licensed User
Longtime User
Im sqlmanager wird der die Feldnamen in "Ticks" einschliessen (`). Zumindest ist ` in MySQL das Zeichen womit man sowas macht. Keine Ahnung welches man bei SQLite üblicherweise nimmt ;-)

BESSER ist es aber im allgemeinen, reservierte Worte NICHT für Feld- oder Tabellennamen zu verwenden. Bei Tabellen macht es Sinn mit einem Präfix zu arbeiten.

Tabelle Benutzer
Felder haben dann z.B. Namen wie ben_id, ben_name, ben_alter

Mit solch einem Präfix hättest Du vermutlich alle zufällig erwischten reservierte Worte abgedeckt; also da da kein Konflikt entsteht. Neben dem Effekt das Du bei JOINs es auch leichter haben wirst. Wenn Du Dich intensiver mit Datenbankentwicklung auseinander setzt dann wirst Du früher oder später an solchen Punkten/Problemen landen. Ohne läufst du halt in Gefahr irgendwann wieder ein reserviertes Wort zu nehmen und suchst dann wieder nach dem Fehler obwohl ein SQL-Befehl "eigentlich doch ok" zu sein scheint. Mir z.b. ist der Feldname "alter" aber auch nicht wirklich aufgefallen, also dass es ein reserviertes Wort ist. Ich habe nur die Syntax an sich geprüft. Erst als Du erwähntest das es funktionierte nachdem Du das Feld für das "Alter" umbenannt hast, habe ich auf den vorher verwendeten Feldnamen geschaut und in dieser Betrachtung ging mir dann "Alter ist ein reserviertes Wort in MySQL. In SQLite auch?" durch den Kopf.

Die Sache mit dem Präfix ist an manchen Stellen vielleicht unbequem weil man mehr tippen muss. Aber ich habe mich - für mich - FÜR den Einsatz von Prefixen in meinen Datenbankstrukturen entschieden. Schon vor langer Zeit.

Letztendlich ist es NATÜRLICH jedem selber überlassen was er wie in seiner Datenbankstruktur benennt ;-)
 
Last edited:

derMartin

Member
Licensed User
Longtime User
Das versucht mir unser Softwareentwickler in der Firma schon so lange reinzuprügeln...... Hab ja jetzt gesehen das es paar Stunden Lebenszeit kosten kann, werde mich versuchen Präfixe anzugewöhnen.
 
Top