Startseite › Foren › Deutsches LiveCode-Forum › Blättern in SQLite-Datenbank › Antwort auf: Blättern in SQLite-Datenbank
Ah,
jetzt wird’s klarer – babylonische Begriffsverwirrung!
2 Sachen sind zu unterscheiden:
- Text-Strings in den Daten
Das (… WHERE Country=’Mexico’) sollte eindeutig sein – einfache Quotes für String-Daten. Die mySQL Referenz sagt dazu:A string is a sequence of bytes or characters, enclosed within either single quote (‘) or double quote (“) characters.
Double Quotes sind dabei mit Vorsicht zu genießen – nicht nur wird das Zusammenbauen der SQL-Queries in LC damit zum fehlerträchtigen Puzzle, die Bedeutung in mySQL ist auch noch abhängig von der DB-Einstellung (Schalter: “ANSI QUOTES”)!
- “Identifier”, d.h. Tabellen- und Feld-Namen, Schlüsselwörter u.ä.
Das (SELECT * FROM component WHERE timestamp = …) ist auch nicht schwierig – das angeführte Beispiel wird Fehler werfen, weil sowohl “component” als auch “timestamp” Bestandteile von SQL sind (reservierte/ Schlüsselwörter).
In diesem Fall quoten wir, und mySQL sieht dafür den “backtick/ backquote” vor. Quote:The identifier quote character is the backtick (`)
Das ist nicht anders als in LC, wo es auch sinnvoll ist, Feld- und Button-Namen zu quoten. Der Unterschied ist, daß (zumindest) mySQL unterschiedliche Zeichen verlangt.
Jetzt habe ich noch mal bei SQLite nachgeschaut – die bemühen sich, zu allen der anderen SQL-Dialekten kompatibel zu sein, und treiben es dabei auf die Spitze. Quote:
If a keyword in single quotes (ex: ‘key’ or ‘glob’) is used in a context where an identifier is allowed but where a string literal is not allowed, then the token is understood to be an identifier instead of a string literal.
Das heißt, es kann funktionieren, muss aber nicht …
Ich hoffe, ich konnte zur allgemeinen Verwirrung beitragen 😉
Viel Spaß!