Programmieren für mobile Endgeräte€¦ · • 2. Parameter: zu speichernde Dateninhalte als Map...
Transcript of Programmieren für mobile Endgeräte€¦ · • 2. Parameter: zu speichernde Dateninhalte als Map...
Dozenten: Patrick Förster, Michael Hasseler
Programmieren für mobile Endgeräte SS 2013/2014
Dozenten: Patrick Förster, Michael Hasseler
SQLite als Datenbank-Managementsystem (DBMS)
• wenige 100 KB schlanke Programmbibliothek
• Aktuelle Version: 3.8.1
• Für die Erstellung und Verwaltung von relationalen Datenbanken
• Standard SQL-92 wird in großen Teilen unterstützt
• Eine Datenbank von SQLite besteht aus nur einer einzigen Datei.
• Einsatzgebiete sind u. a. Android-Mobiltelephone und Mozilla Firefox
• Android mit derzeit mit SQLite Version 3.4 ausgeliefert (Quelle: http://developer.android.com/reference/android/database/sqlite/package-summary.html)
Programmieren für mobile Endgeräte 2
Quelle: http://de.wikipedia.org/wiki/SQLite
Dozenten: Patrick Förster, Michael Hasseler
Relationale Datenbank
• Daten werden in Tabellen gespeichert
• Ergebnis einer Datenbankabfrage auch eine Tabelle.
• Primärschüssel einer Tabelle beschreibt einen Datensatz eindeutig
• Tabellen können mit Fremdschlüsseln aufeinander verweisen und
Beziehungen (Relationen) haben.
• Fremdschlüssel einer Tabelle ist i. d. R. Primärschlüssel der gleichen oder
einer anderen Tabelle
Programmieren für mobile Endgeräte 3
Lauf.-Nr. Name Artikel Anzahl Preis
1 Meyer PC 1 499,95
2 Müller DVD 20 20,00
3 Schulze Handy 1 120,00
Dozenten: Patrick Förster, Michael Hasseler
Datenbank mit Android erstellen
1. Datenbank-Schema festlegen
2. Eigene Klasse z. B. AufgabenDBHelper von der Klasse SQLiteDatabaseHelper
ableiten
3. Datenbankname und Version festlegen
4. Methoden onCreate(..) und onUpgrade(..) überschreiben
• onCreate(..) erstellt eine neue Datenbank
• onUpgrade(..) wird bei einem Versionswechsel der Datenbank aufgerufen
5. Die geerbten Methoden getWriteableDatabase() bzw. getReadableDatabase() aus der
Klasse SQLiteDatabaseHelper liefern eine Referenz auf das Datenbank-Objekt
Programmieren für mobile Endgeräte 4
Quelle:: http://developer.android.com/training/basics/data-storage/databases.html
Dozenten: Patrick Förster, Michael Hasseler
1. Datenbank-Schema festlegen
• Datenbankschema definiert Tabellenstruktur(en):
• Tabellenname
• Spaltennamen
• Kann in Form einer Contract Class erfolgen
• Globale Informationen in der Contract Class
• Jede Tabelle bildet eine inner class in der contract class
Programmieren für mobile Endgeräte 5
Quelle:: http://developer.android.com/training/basics/data-storage/databases.html#DefineContract
Dozenten: Patrick Förster, Michael Hasseler
Beispiel zu einer Contract class
• Datenbankschema mit der Tabelle Aufgaben
Programmieren für mobile Endgeräte 6
Dozenten: Patrick Förster, Michael Hasseler
Beispiel: AufgabenDBHelper.java 1/4
• Ableitung von der Oberklasse SQLiteOpenHelper und Konstanten anlegen:
Programmieren für mobile Endgeräte 7
Dozenten: Patrick Förster, Michael Hasseler
Beispiel: AufgabenDBHelper.java 2/4
• Überschreiben der Methoden aus der Oberklasse
Programmieren für mobile Endgeräte 8
Dozenten: Patrick Förster, Michael Hasseler
Beispiel: AufgabenDBHelper.java 3/4
• Referenz mit getWriteableDatabase holen und in einer Instanzvariable speichern
• Methode close() überschreiben und db-Objekt schliessen
Programmieren für mobile Endgeräte 9
Dozenten: Patrick Förster, Michael Hasseler
Informationen in der Datenbank speichern
• Mit insert(..) können Daten in eine Tabelle hinzugefügt werden
• 1.Parameter: Tabellenname
• 2. Parameter: Vorgabewert für den Fall, dass der dritte Parameter null ist
• 3. Parameter: zu speichernde Dateninhalte als Map
• Beispiel:
Programmieren für mobile Endgeräte 10
Quelle:: http://developer.android.com/training/basics/data-storage/databases.html#ReadDbRow
Dozenten: Patrick Förster, Michael Hasseler
Informationen in der Datenbank aktualisieren
• Mit update(..) können Daten in eine Tabelle hinzugefügt werden
• 1.Parameter: Tabellenname
• 2. Parameter: zu speichernde Dateninhalte als Map
• 3. Parameter: Einschränkung in Form eines SQL-Fragments, welche Datensätze
aktualisiert werden sollen z. B. _id=?
• 4. Parameter: Übergabe der Parameter als String-Array für das SQL-Fragment aus
dem 3.Parameter
Programmieren für mobile Endgeräte 11
Quelle:: http://developer.android.com/training/basics/data-storage/databases.html#UpdateDbRow
Dozenten: Patrick Förster, Michael Hasseler
Zusammenfassung
• Was ist die Aufgabe einer Contract Class?
• Wie legt man mit Android unter der Verwendung von SQLite eine Datenbank an?
• Wie speichert man Daten in der SQLite-Datenbank von Android?
• Wie aktualisiert man Daten in der SQLite-Datenbank von Android?
Programmieren für mobile Endgeräte 12
Dozenten: Patrick Förster, Michael Hasseler
Aufgaben
1. Erweitern Sie das Android-Projekt AufgabenApp, sodass in der Listview ein
Datensatz angeklickt werden kann und das Detailfenster AddAufgabeActivity
mit dessen Werten vorbelegt wird.
2. Für den Fall, dass der Datensatz, der in der View AddAufgabeActivity gezeigt
wird, bereits in der Datenbank gespeichert wurde, soll es zum einen die
Möglichkeit geben, den Datensatz zu aktualisieren und zum anderen soll der
Datensatz auch neu angelegt werden können.
Programmieren für mobile Endgeräte 13