Antwort auf: Blättern in SQLite-Datenbank

Startseite Foren Deutsches LiveCode-Forum Blättern in SQLite-Datenbank Antwort auf: Blättern in SQLite-Datenbank

#17218
Axwald
Teilnehmer

    Ah,
    jetzt wird’s klarer – babylonische Begriffsverwirrung!

    2 Sachen sind zu unterscheiden:

    1. 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”)!

    2. “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ß!