Startseite › Foren › Deutsches LiveCode-Forum › Datenbank mit SQLite
- Dieses Thema hat 21 Antworten und 5 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 5 Monaten von glenn9.
-
AutorBeiträge
-
-
Mai 7, 2017 um 18:35 Uhr #892
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 databaseInsertContactDetailsNun 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 databaseInsertContactDetailsWie erreiche is es, dass meine Eingaben in der Datenbank gespeichert werden?
Bin für jeden kleinen Hinweis dankbar.
Mit Besten Grüßen -
Mai 7, 2017 um 19:46 Uhr #898
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
-
Mai 7, 2017 um 19:48 Uhr #900
P.S.
Willkommen im Club! 🙂 -
Mai 8, 2017 um 04:03 Uhr #906
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
-
Mai 8, 2017 um 08:59 Uhr #908
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
-
Mai 9, 2017 um 05:03 Uhr #929
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 qfunction q2 tString
return "'" & tString & "'"
end q2erhalte 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
-
Mai 9, 2017 um 10:07 Uhr #931
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.deGruß
Klaus
-
April 28, 2020 um 10:09 Uhr #20420
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
-
-
Mai 9, 2017 um 11:23 Uhr #935
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! 🙂 -
Mai 9, 2017 um 18:15 Uhr #944
Hallo Klaus
Danke für Deine Antworten. Ich werde es testen und mich wieder melden.
-
Mai 11, 2017 um 03:59 Uhr #959
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
-
Mai 11, 2017 um 08:28 Uhr #963
Alles klar, Du schaffst das! 🙂
Bis dann! -
Mai 16, 2017 um 07:07 Uhr #1006
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 = 4Doch ich erhalte folgende Fehlermeldung:
card id 1002: execution error at line 76 (Handler: can’t find handler) near “WHERE”, char 8Wenn ich alle Datensätze anzeigen lasse, dann sehe ich, dass der 4te vorhanden ist.
Was fehlt in meiner Anweisung?
Gruß Arno
-
Mai 16, 2017 um 07:17 Uhr #1008
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
-
Mai 16, 2017 um 07:23 Uhr #1010
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
-
Mai 16, 2017 um 13:39 Uhr #1012
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 tRecordsDen 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_letzterDatensatzDaher 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
-
Mai 16, 2017 um 14:09 Uhr #1014
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
-
Mai 16, 2017 um 14:15 Uhr #1016
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
-
September 24, 2017 um 11:58 Uhr #2166
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 🙂
-
September 25, 2017 um 14:09 Uhr #2183
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
-
September 26, 2017 um 09:23 Uhr #2187
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 abarbeitenoder 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
-
September 26, 2017 um 09:52 Uhr #2191
Ich denke ich habe meine Antwort schon gefunden 😉 und die lautet mySQL und nicht SQLite
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.