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
        Administrator

          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
          Administrator

            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
              Administrator

                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
                  Administrator

                    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
                      Administrator

                        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
                            Administrator

                              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
                                Administrator

                                  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
                                      Administrator

                                        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
                                            Administrator

                                              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.