Datenbank mit SQLite

Startseite Foren Deutsches LiveCode-Forum Datenbank mit SQLite

Ansicht von 20 Antwort-Themen
  • Autor
    Beiträge
    • #892
      Gaukler007
      Teilnehmer

      Hallo,
      ich habe vor einiger Zeit das Buch von Hauke Fehr erworben und die Themen durchgearbeitet, die mich interessierten.
      Ich muss schon sagen, das Buch ist verständlich geschrieben, auch für Einsteiger wie mich, die wenig Programmiererfahrung haben.
      Ich habe damit schon einen für mich großen Erfolg erzielt.
      Was in dem Buch aber nicht behandelt wird, ist das Thema Datenbank.
      Ich möchte vorerst mal eine kleine Datenbank erstellen, die ich dann weiter an meine Bedürfnisse anpassen werde. Da ich im Buch nichts zu diesem Thema gefunden habe, habe ich mich bei Herr Google schlau gemacht und auch ein Beispiel gefunden.
      In dem Beispiel werden zwei Daten (Namen und Emailadresse) in eine Datenbank geschrieben und angezeigt. Ich möchte nun aber diese zwei Daten in einem Formular abfragen und in der Datenbank speichern.
      Hier habe ich ein Ausschnitt des Beisspielprogrammes welches Funktioniert:

      on databaseInsertContactDetails
      ## Insert names and email addresses into the database
      put getDatabaseID() into tDatabaseID
      put „INSERT into contact_details VALUES (‚Hansi Schmitt‘ , ‚hs@xyz.de)“ into tSQL
      put „INSERT into contact_details VALUES (‚Torsten Müller‘, ‚torsten@abc.com‘);“ after tSQL
      put „INSERT into contact_details VALUES (‚Tom Smith‘,’tom.smith@email.com‘);“ after tSQL
      put „INSERT into contact_details VALUES (‚Mary Brown‘,’mary.brown@email.com‘)“ after tSQL
      revExecuteSQL tDatabaseID, tSQL
      end databaseInsertContactDetails

      Nun habe ich zwei Felder erzeugt (Field Vorname und Field Nachname) und übergebe die Eingaben an die Variablen var_vname und var_nname.

      Nun zu meiner Version des Programm welches nicht funktioniert:
      Zur Kontrolle, dass die Variablen auch wirklich einen Wert enthalten, lasse ich Sie vorher mit answer anzeigen. Die Variablen enthalten die Werte, die ich in den entsprechenden Feldern eingebe.

      on databaseInsertContactDetails
      ## Insert names and email addresses into the database
      put getDatabaseID() into tDatabaseID
      answer var_vname
      answer var_nname
      put „INSERT into contact_details VALUES (var_vname , var_nname)“ into tSQL
      revExecuteSQL tDatabaseID, tSQL
      end databaseInsertContactDetails

      Wie erreiche is es, dass meine Eingaben in der Datenbank gespeichert werden?

      Bin für jeden kleinen Hinweis dankbar.
      Mit Besten Grüßen

    • #898
      Klaus Major
      Verwalter

      Hallo Gaukler,

      Du übergist die STRINGS var_name und var_nname anstatt deren Inhalt!

      So sollte es klappen:

      put „INSERT into contact_details VALUES (“ & „‚“ & var_vname & „‚, “ & „‚“ & var_nname & „‚)“ into tSQL
      ## Das hier hilft in den meisten Fällen, um das zu vermeiden:
      answer tSQL

      Hinweis:
      Ich benutze immer folgende kleine Funktionen, die sparen viel Tipparbeit, nicht nur bei Datenbankd Gedöns und man muss nicht immer alle Anführungszeichen zählen. 🙂

      function q tString
        return QUOTE & tString & QUOTE
      end q
      
      function q2 tString
        return "'" & tString & "'"
      end q2

      So sieht es mit den Funktionen aus:

      put „INSERT into contact_details VALUES (“ & q2(var_vname) & „, “ & q2(var_nname) & „)“ into tSQL

      Gruß

      Klaus

    • #900
      Klaus Major
      Verwalter

      P.S.
      Willkommen im Club! 🙂

    • #906
      Gaukler007
      Teilnehmer

      Guten Morgen Klaus,

      vielen Dank für Deine Hilfe. Ich werde es heute mal versuchen.
      Da kommt natürlich gleich eine weitere Frage auf, denn wenn ich Daten in eine Datenbank schreibe, möchte ich diese auch irgendwann wieder auslesen. Geht das dann genauso?

      Vorab schon mal Herzlichen Dank und einen schönen Tag, auch wenn das Wetter was anderes sagt.

      Gruß

      Arno

    • #908
      Klaus Major
      Verwalter

      Hallo Arno,

      gern geschehen!

      Ja, im Prinzip geht auslesen aus der Datanbank auch so.
      Du bastelst einen SQL String zusammen und schickt den ab.

      Kannst wieder gerne hier fragen, wenn Du Tips benötigst oder es Probleme geben sollte.

      Bis denne…

      Gruß

      Klaus

    • #929
      Gaukler007
      Teilnehmer

      Hallo Klaus,

      leider hatte ich mit deinen Beispielen keinen Erfolg.

      Wenn ich deinen Code

      put „INSERT into contact_details VALUES (“ & „‚“ & var_vname & „‚, “ & „‚“ & var_nname & „‚)“ into tSQL

      einsetze, erscheint die Fehlermelfung

      card id 1002: compilation error at line 45 (Handler: bad command) near „‚“, char 44

      Wenn ich es mit den Funktionen versuche

      function q tString
      return QUOTE & tString & QUOTE
      end q

      function q2 tString
      return "'" & tString & "'"
      end q2

      erhalte ich für die Zeile zwei folgende Fehlermeldung

      card id 1002: compilation error at line 2 (Expression: double binary operator) near „&“, char 19

      Entweder verwende ich eine falsche Version von LiveCode (Version 8.1.3) oder ich mach irgend etwas anderes falsch.
      leider finde ich im Internet so gut wie keine deutsche Anleitung oder Tutorials. Da meine Englischkenntnisse schlecht sind, ist es natürlich schwer sich in LiveCode einzuarbeiten.

      Vielleicht kannst du mir noch ein paar Tipps geben.

      Mit Besten Grüßen

      Arno

    • #931
      Klaus Major
      Verwalter

      Hallo Arno,

      hm, ich habe folgendes Skript sowhl mit LC 8.14 RC1 sowie LC 9 DP6 getestet und habe keine Fehlermeldung bekommen und das erwartete Erbegnis in der Messagebox gesehen:

      on mouseUp
         put "Klaus" into var_vname
         put "Major" into var_nname
         put "INSERT into contact_details VALUES (" & "'" & var_vname & "', " & "'" & var_nname & "')" into tSQL1
         put "INSERT into contact_details VALUES (" & q2(var_vname) & ", " & q2(var_nname) & ")" into tSQL2
         put tSQL1 & CR & tSQL2
      end mouseUp

      Message Box:
      INSERT into contact_details VALUES (‚Klaus‘, ‚Major‘)
      INSERT into contact_details VALUES (‚Klaus‘, ‚Major‘)

      Hast Du mal den Inhalt der Variablen überprüft?
      Vielleicht hat sich ein RETURN eingeschlichen?

      Ich rate jetzt natürlich nur, weil ich keine weitere Idee habe.
      Wenn Du magst kannst Du mir den Stack (oder eine abgespeckte Version davon) gerne schicken und ich gucke mal rein: klaus AT major-k.de

      Gruß

      Klaus

      • #20420
        glenn9
        Teilnehmer

        Hallo Klaus,

        Ich wollte nur sagen daß deinen Beitrag sehr geholfen hat bei meiner erste Versuche SQLite Datenbanken zu verstehen.

        Ich komme jetzt ein bißchen voran, aber im Moment mehr durch ‚Rezept‘ als Verstand!

        Gruß,

        Glenn

    • #935
      Klaus Major
      Verwalter

      Du könntest es auch mal mit dieser alternativen Syntax versuchen:

      revExecuteSQL tDatabaseID, „INSERT INTO contact_details VALUES (:1,:2)“,“var_vname“,“var_nname“

      Das könnte Problem mit CRs o.ä. in den Variablen umgehen.
      Ist auf jeden Fall einen Versuch wert! 🙂

    • #944
      Gaukler007
      Teilnehmer

      Hallo Klaus

      Danke für Deine Antworten. Ich werde es testen und mich wieder melden.

    • #959
      Gaukler007
      Teilnehmer

      Guten Morgen Klaus,

      Mit Deinem letzten Hinweis hat es funktioniert. Auf diesem Weg hab es auch geschafft mehrere Datenfelder zu beschreiben.
      Nun bin ich dabei, diese Daten wieder auszulesen und einzelnen Felder zu zu ordnen. Sollte ich es nicht schaffen werde ich mich wieder melden.

      Gruß, Arno

    • #963
      Klaus Major
      Verwalter

      Alles klar, Du schaffst das! 🙂
      Bis dann!

    • #1006
      Gaukler007
      Teilnehmer

      Hallo Klaus,

      ich bin schon etwas weiter gekommen, doch nun hänge ich schon wieder.

      Ich habe eine Tabelle erstellt die mehrere Datensätze enthält. Nun möchte ich einen ganz bestimmten Datensatz auswählen und die enthaltenen Werte in Felder anzeigen lassen.

      Mit folgender Zeile möchte ich z.B. die Werte der 4ten Reihe anzeigen lassen.
      put „SELECT rowid, vname, nname, strasse FROM contact_details“ WHERE rowid = 4

      Doch ich erhalte folgende Fehlermeldung:
      card id 1002: execution error at line 76 (Handler: can’t find handler) near „WHERE“, char 8

      Wenn ich alle Datensätze anzeigen lasse, dann sehe ich, dass der 4te vorhanden ist.

      Was fehlt in meiner Anweisung?

      Gruß Arno

    • #1008
      hauke
      Verwalter

      Hallo Arno,

      da steht ein Anführungszeichen falsch:

      put „SELECT rowid, vname, nname, strasse FROM contact_details WHERE rowid = 4“ into sql

      So sollte es gehen.

      Gruß

      Hauke

    • #1010
      Gaukler007
      Teilnehmer

      Hallo Hauke,

      herzlichen Dank für deine superschnelle Antwort.

      Das war der Fehler. Jetzt funktioniert es. Danke.

      Dann werde ich jetzt mal weiter machen… bis zum nächsten Hänger 😉

      Gruß

      Arno

    • #1012
      Gaukler007
      Teilnehmer

      Hallo Hauke,

      hat nicht lange gedauert bis zu meinem nächsten Hänger:-( Ich versuche der SELECT…. WHERE Anweisung eine Zahl als Variable zu übergeben, doch leider wird diese nicht übernommen. Meine Code-Zeilen sehen wie folgt aus:

      ##letzten Datensatz anzeigen und in Felder schreiben
      answer „Letzter Datensatz: “ & var_letzterDatensatz
      put „SELECT rowid, vname, nname, strasse FROM contact_details WHERE rowid = ‚var_letzterDatensatz'“ into tSQL
      put revDataFromQuery(tab,return,tDatabaseID,tSQL) into tRecords
      answer tRecords

      Den letzten Datensatz habe ich richtig ermittelt. Dieser wird mit dem ersten answer-Befehl auch richtig angezeigt.
      Wenn ich die Variable var_letzterDatensatz in Hochzeichen setze, dann erhalte ich eine leere Ausgaben mit dem zweiten answer-Befehl.
      Lasse ich die Hochzeichen weg, dann erhalte ich beim Ausführen der Zeile folgende Fehlermeldung:
      revdberr,Database Error: no such column: var_letzterDatensatz

      Daher meine Frage: Wie übergebe ich einer SELECT… WHERE-Anweisung Variablen… als Zahl und als Text, denn ich möchte auch Text bzw. einen String einsetzen.

      Gruß

      Arno

    • #1014
      Klaus Major
      Verwalter

      Hallo Arno,

      so sollte es gehen:

      ...
      put "SELECT rowid, vname, nname, strasse FROM contact_details WHERE rowid =" & "'" & var_letzterDatensatz & "'" into tSQL
      ...
      Oder os:
      put "SELECT rowid, vname, nname, strasse FROM contact_details WHERE rowid =" & q2( var_letzterDatensatz) into tSQL
      ...

      Und zur Vorsicht und optischer Kontrolle immer mal wieder:

      ...
      answer tSQL 
      ## Sehen heisst Glauben! :-)
      ...

      Gruß

      Klaus

    • #1016
      Gaukler007
      Teilnehmer

      Hallo Klaus,

      wollte gerade schreiben dass ich es geschafft habe als deine Mail eingetroffen ist.

      Ich habe eine ähnliche Lösung gefunden. Meine Zeile lautet nun:

      put „SELECT rowid, vname, nname, strasse FROM contact_details WHERE rowid = „&var_ausgewaehlterDatensatz&““ into tSQL

      Der Variable var_ausgewaehlterDatensatz weise ich nun die ID-Nummer des Datensatzes zu, den ich bearbeiten möchte. Damit geht es nun weiter.

      Trotzdem herzlichen Dank für Deine Hilfe.

      Gruß

      Arno

    • #2166
      baumi92
      Teilnehmer

      Hallo Leute!
      eine kurze blöde Frage zu diesem Thema 😉 , denn ich glaube, dass diese Datenbank die Antwort auf eines meiner Probleme ist^^

      Ich suche eine Möglichkeit, wie ich aus meiner Bestellapp für meine Firma eine Variable, die die Bestellung enthält auslesen kann. Bzw in die meine Kunden ich noch Fotos hinzufügen können (auch dafür fehlt mir nioch mein script den ich aber bisher noch nicht gesucht habe).

      meine Gedanken waren die, dass ich meiner App sage, sie soll mir eine Mail zukommen lassen, die die Bestellung enthält. Auf der Suche nach diesem script stieß ich auf diesen Eintrag und nun frage ich mich, ob es mit einer Datenbank auch irgendwie funktioniert?!

      Ich bin kein Programmierendes Wundergenie also verzeiht mir bitte wenn ich hier komplett falsch an bin aber vll könnt ihr mir helfen, wo ich suchen muss oder ihr wisst vll selber einen Lösungsansatz mit meinem Mail/Datenbank Problem.

      Danke 🙂

    • #2183
      Klaus Major
      Verwalter

      Hallo Baumi,

      meine Gedanken waren die, dass ich meiner App sage, sie soll mir eine Mail zukommen lassen, die die Bestellung enthält. Auf der Suche nach diesem script stieß ich auf diesen Eintrag und nun frage ich mich, ob es mit einer Datenbank auch irgendwie funktioniert?!

      ich sehe leider nicht den Zusammenhang zwischen „Mail zukommen lassen…“ und „ob das mit einer Datenbank auch funktioniert“? Was soll mit einer Datenbank auch funktionieren?

      Gruß

      Klaus

    • #2187
      baumi92
      Teilnehmer

      meine Überlegungen als Laie waren die, dass ich überlegt habe wie ich an die Daten komme, die meine Kunden in die App eigeben also die Bestellung des Produkts, Name , Adresse, etc.

      meine Überlegungen waren:
      1. die App sendet mir ein Mail mit den benötigten Informationen und ich kann die Bestellungen abarbeiten

      oder eben:

      2. es gibt eine Onlinedatenbank in die alle Informationen gespeichert werden, die ich dann auslesen kann und so komme ich an alle benötigten Daten.

      also kein Zusammenhang beider Methoden sondern eher 2 unabhängige, verschiedene Lösungsansätze 😉

      danke für die schnelle Antwort

    • #2191
      baumi92
      Teilnehmer

      Ich denke ich habe meine Antwort schon gefunden 😉 und die lautet mySQL und nicht SQLite

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