Cross-Plattform-Apps mit Cordova, Ionic, TypeScript und Visual Studio

Daten mit SQLite speichern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Zum Abspeichern von Daten muss ein INSERT-Statement geschrieben werden.
04:42

Transkript

In meiner TypeScript-Servicedatei lege ich bereits eine Datenbank an, falls es diese noch nicht gibt, und erzeuge auch eine Tabelle zum Ablegen von savedItems. Was nun noch fehlt, ist, in diese Tabelle auch etwas hereinzuschreiben. Und genau das möchte ich in diesem Video erledigen. Dazu habe ich in meinem Service bereits die Methode "addItem". Diese erhält einen String und einen Preis. Und beide Informationen werden aktuell an den Konstruktor der SavedItem-Klasse übergeben. Und dann wird so ein Objekt einfach erzeugt und in das Array hinzugefügt. Ich möchte ja nun Folgendes machen. Ich möchte nun zum einen diese Information hier herausziehen. Ich sage also "item" ist gleich "newSavedItem", und übergebe das jetzt hier losgelöst. Und als nächstes möchte ich ganz gerne ein SQL-Statement schreiben, das diese Information auch in die Datenbank schreibt. Dieses SQL-Statement, das ist ein INSERT-Statement. Also sage ich: "var sql" ist gleich "INSERT INTO". Und zwar wollen wir in die Tabelle "savedItems" einfügen. Und hier haben wir die Felder "description", wir haben "price" und "date". Die ID müssen wir nicht befüllen. Das wird SQLite für uns automatisch machen, wenn wir keinen Wert übergeben. Die Werte, die werde ich über Parameterbindung übergeben. Heißt also: Ich gebe hier keine festen Werte an, sondern drei Fragezeichen, nämlich für jeden eines. Und dadurch kann ich gleich einfach Parameter binden. Und das hilft natürlich, SQL-Injection und Ähnliches zu verhindern. Als nächstes rufe ich jetzt am cordovaSQLite-Service die Methode "execute" auf. Und "execute" möchte zunächst die Datenbank übergeben haben, dann das SQL-Statement und dann ein Array mit den entsprechenden Werten, passend zu den jeweiligen Parametern. Das erste war die description. Ich habe also "item.description". Dann der Preis, "item.price". Und dann das Datum. Und beim Datum haben wir eine Besonderheit. SQLite speichert intern das Datum immer als Zahl. Und an diese Zahl, die ich hier benötige, komme ich heran, indem ich die Eigenschaft "date" meiner Klasse aufrufe und hier dann die Methode "getTime" aufrufe. Zu guter Letzt füge ich das Ganze immer noch einmal in das Array hinzu. Das werde ich nur jetzt temporär machen. Später benötige ich das nicht mehr. Außerdem noch eine kleine Komfortfunktion: Aktuell würde ich auch ungültige Daten einfügen, nämlich zum Beispiel Daten, die einen leeren String haben oder eine leere Nummer, oder die einen negativen Preis haben. Natürlich möchte ich das alles verhindern. Und ich werde jetzt hier keine große Fehlerbehandlung machen, sondern einfach herausspringen. Also, in dem Moment, wenn hier "description" leer ist, also "if not description" oder "not price", oder "price" kleiner Null, immer dann will ich einfach direkt herausspringen. Idealerweise würde ich natürlich eine Fehlermeldung bringen, aber das wäre jetzt ein bisschen zu viel an dieser Stelle hier. Das gleiche mache ich auch nochmal in meinem Controller, direkt im UI, damit ich hier direkt für den Fall, dass ich ungültige Daten eingebe, auch die entsprechenden Felder hier gar nicht lösche, füge ich hier den gleichen Code ein, muss aber hier natürlich ein "this" davor machen. Warum an zwei Stellen? Naja, einmal am Controller einfach als Komfortfunktion. Der Benutzer gibt was Falsches ein, es wird sofort die Methode verlassen, und das Leeren der Felder erfolgt nicht. Vielleicht hat er ja nur eines der Felder leergelassen. Das andere, das soll dann weiter zumindest bestehen bleiben. Im Service mache ich es noch einmal, weil ich ja diese Service-Methode auch an einer anderen Stelle später rufen könnte, wo diese Validierung vorab fehlt. Sie haben aber gesehen: Das Eigentliche, was wir gemacht haben, war ja, dass wir über SQL einen Eintrag in der Datenbank gespeichert haben. Das war gar nicht so schwer. Wir mussten halt hier ein SQL-Statement schreiben, und haben dieses dann über das Cordova-SQLite-Plug-In ausgeführt. Dazu mussten wir die Datenbank übergeben. Und anschließend haben wir erst die SQL-Anweisung und dann die Parameter- Werte übergeben.

Cross-Plattform-Apps mit Cordova, Ionic, TypeScript und Visual Studio

Steigen Sie in die App-Programmierung ein und kombinieren Sie die praktischen Tools.

2 Std. 45 min (23 Videos)
Derzeit sind keine Feedbacks vorhanden...
Exklusiv für Abo-Kunden
Erscheinungsdatum:14.11.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!