Startseite › Foren › Deutsches LiveCode-Forum › Variablen in SQlite-Datenbank schreiben
- Dieses Thema hat 6 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren von Klaus Major.
-
AutorBeiträge
-
-
November 16, 2019 um 11:53 Uhr #17062
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 -
November 16, 2019 um 12:08 Uhr #17064
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-InjectionGruß
Klaus
-
November 16, 2019 um 15:12 Uhr #17067
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
-
November 16, 2019 um 15:16 Uhr #17069
Diesen Trick kannte ich bisher auch nicht.
Ist aber möglicherweise auch ein spezielles und gut durchdachtes LC Feature. -
November 16, 2019 um 15:19 Uhr #17071
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 -
November 16, 2019 um 16:21 Uhr #17073
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 -
November 16, 2019 um 16:26 Uhr #17075
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! 🙂
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.