Variablen in SQlite-Datenbank schreiben

Startseite Foren Deutsches LiveCode-Forum Variablen in SQlite-Datenbank schreiben

Ansicht von 6 Antwort-Themen
  • Autor
    Beiträge
    • #17062
      Radmuehl
      Teilnehmer

        Liebe Forumsmitglieder,

        ich bin gerade dabei mich mit SQLite-Datenbanken zu beschäftigen und habe hierfür ein Beispiel aus dem Internet verwendet. Das typische, eine Adressdatenbank. Wenn ich die Inhalte per Zeichen in die Datenbank schreibe funktioniert es. Wenn ich sie vorher in eine Variable schreibe geht es nicht. Die Variablen werden nicht in die Datenbank eingetragen. Wo liegt mein Denkfehler?

        global gNachname
        global gVorname
        global gTelefon
        
        on mouseup
           Put "Mustermann" into gNachname
           Put "Karl" into gVorname
           Put "01234" into gTelefon
          
           put revOpenDatabase ("sqlite","d:personendb.db", , , , ) into dbid
          
          -- (das funktioniert) put "insert into personendaten (nachname, vorname, telefon) VALUES ('Mustermann','Karl', '01234567')" into sql revExecuteSQL dbid, sql
          -- (das funktioniert nicht) put "insert into personendaten (nachname, vorname, telefon) VALUES (gNachname,gVorname, gTelefon)" into sql revExecuteSQL dbid, sql
            -- (das funktioniert nicht) put "insert into personendaten (nachname, vorname, telefon) VALUES (" & "'" & gNachname & "', " & "'" & gVorname & "')" into sql revExecuteSQL dbid, sql
            revCloseDatabase dbid
        end mouseup
        

        Viele Grüße
        Radmühl

      • #17064
        Klaus Major
        Verwalter

          Hallo Radmühl,

          das sollte so funktionieren, wir benutzen Platzhalter für die Variablen, was auch ein gutes Mittel gegen „SQL Injection“ sei, wie ich gehört habe, lies mal unter „revExecuteSQL“ im Dictionary nach:

          ...
          put "insert into personendaten (nachname, vorname, telefon) VALUES (:1,:2,:3)" into tSql
          
          ## Im SQL stehen nun die Platzhalter und erst im revExecuteSql Befehl übergeben 
          ## wir die "echten" Werte, allerdings, etwas gewöhnungsbedürftig, in Anführungszeichen!
          ## LC übersetzt das dann alles für uns in korrektes SQL.
          revExecuteSQL dbid, tSql,"gNachname","gVorname","gTelefon"
          ...

          Zur Info:
          https://de.wikipedia.org/wiki/SQL-Injection

          Gruß

          Klaus

        • #17067
          Radmuehl
          Teilnehmer

            Hallo Klaus,

            danke, funktioniert einwandfrei. Ist zwar anders als ich es bisher kannte, aber man gewöhnt sich daran. Habe früher alles mit DBase-Datenbanken gemacht.

            Gruß

            Radmühl

          • #17069
            Klaus Major
            Verwalter

              Diesen Trick kannte ich bisher auch nicht.
              Ist aber möglicherweise auch ein spezielles und gut durchdachtes LC Feature.

            • #17071
              Klaus Major
              Verwalter

                Hier noch ein älteres Posting von mir, es geht um ein paar praktische Funktionen
                (nicht nur) beim Umgang mit Datenbanken und Anführungszeichen:
                https://www.livecode-blog.de/forums/topic/einfacher-login-mit-mysql-datenbank/#post-14842

              • #17073
                Radmuehl
                Teilnehmer

                  Hallo Klaus,

                  da hast Du mich falsch verstanden oder ich habe mich falsch ausgedrückt. Ich komme aus der XProfan Ecke. Da habe ich alles mit DBase-Datenbanken gemacht.

                  Ich fange jetzt mit Livecode an, weil es hier möglich ist Apps fürs Handy zu erstellen. Ich muss sagen, dass mir die Oberfläche Spaß macht. Ich habe es gerade realsiert, dass meine Daten jetzt in einer Liste angezeigt werden. Das nächste was dann noch kommt, ist das ausrechnen von Gesamtsummen der jeweiligen Zeilen.

                  Ich hoffe dass das von mir bestellte Buch pünktlich erscheint. Ich freue mich schon sehr wenn es endlich kommt.

                  Viele Grüße
                  Radmühl

                • #17075
                  Klaus Major
                  Verwalter

                    Ich habe Dich schon richtig verstanden, wollte nur auf meine nützliche Funktion hinweisen.
                    Daher schrieb ich: …(nicht nur) beim Umgang mit Datenbanken…

                    Ob Du sie benutzt, überlasse ich ganz Dir! 🙂

                Ansicht von 6 Antwort-Themen
                • Du musst angemeldet sein, um auf dieses Thema antworten zu können.