Mobile App Development - Persistenz -

Größe: px
Ab Seite anzeigen:

Download "Mobile App Development - Persistenz -"

Transkript

1 Mobile App Development - Persistenz -

2 Inhalt Shared Preferences Dateien Datenbanken ORM

3 Shared Preferences

4 Shared Preferences Framework zum Speichern von Key-Value- Paaren Datentypen: boolean, float, int, long, String Daten werden in einer Datei gespeichert Nach Deinstallation der App werden Preferences-Dateien mit gelöscht

5 Shared Preferences // DemoActivity für SharedPreferences public class SharedPrefsDemoActivity extends Activity {! public static final String PREFS_FILE = "prefsfile";! public static final String MY_KEY = "mykey";!! private int mmymember;!! protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Aufrufen der SharedPreferences SharedPreferences prefs = getsharedpreferences(prefs_file, MODE_PRIVATE); // Abruf des Wertes für MY_KEY (default: 0) mmymember = prefs.getint(my_key, 0);! protected void onstop() {! super.onstop();! // Aufruf der SharedPreferences! SharedPreferences prefs = getsharedpreferences(prefs_file, MODE_PRIVATE);! // Editor aufrufen, um Änderungen zu machen! Editor editprefs = prefs.edit();! // Key-Value-Paar anlegen/aktualisieren! editprefs.putint(my_key, mmymember);! // Änderungen schreiben! editprefs.commit();! } }

6 Dateien

7 Dateien Zwei mögliche Plätze zum Speichern von Dateien: Internal Storage geräteinterner Speicher External Storage externer Speicher, wie SD-Karten

8 Interner Speicher Standardmäßig sind Dateien, die auf dem internen Speicher abgelegt werden privat, d. h. andere Anwendungen können nicht darauf zugreifen Wird die Anwendung deinstalliert, werden auch die internen Dateien gelöscht

9 Interner Speicher Lesen von Dateien Context.openFileInput(...) liefert einen FileInputStream Die weitere Verarbeitung erfolgt wie bei Standard Datei- und Stream-Verarbeitung in Java

10 Interner Speicher Datei lesen private void readfile(string filename) throws Exception {! /* openfileinput() öffnet die Datei mit dem angegebenen Namen! * und liefert eine FIS zurück */! FileInputStream fis = openfileinput(filename);! BufferedReader reader = new BufferedReader(! new InputStreamReader(fis));! String line = "";! /* Auslesen der Datei */! while ( (line = reader.readline())!= null) { /* zeilenweise Verarbeitung */ Log.d(LOG, line);! }! /* reader und stream schließen */ }

11 Interner Speicher Dateien schreiben Context.openFileOutput(...) liefert einen FileOutputStream existiert die Datei noch nicht, wird sie automatische angelegt dsa Schreiben der Datei funktioniert wie auch bei Standard Java

12 Interner Speicher Dateien schreiben private void writefile(string filename, String content)! throws Exception {! /* openfileoutput öffnet einen FOS, der mit der angegebenen! Datei verbunden ist und legt die Datei an, wenn sie noch! nicht exitiert */! FileOutputStream fos = openfileoutput(filename, MODE_PRIVATE);! OutputStreamWriter osw = new OutputStreamWriter(fos);! /* Inhalt in die Datei schreiben */! osw.write(content);!! /* writer und stream schließen */! osw.close(); }

13 Interner Speicher Android unterschiedet verschiedene Modi zum Anlegen einer Datei MODE_PRIVATE Datei ist privat, kann also nur von der erstellenden App gelesen werden wenn Datei bereits vorhanden, wird sie überschrieben

14 Interner Speicher MODE_APPEND Wenn Datei bereits vorhanden, wird neuer Inhalt angehängt MODE_WORLD_READABLE Alle anderen Apps haben lesenden Zugriff

15 Interner Speicher MODE_WORLD_WRITEABLE Alle anderen Apps haben schreibenden Zugriff auf die Datei

16 Interner Speicher Es gibt einige weitere nützliche Methoden, um mit Dateien und Verzeichnisse zu arbeiten Context.getFilesDir() Absoluter Pfad zum dem Verzeichnis, in dem interne Dateien abgelegt werden Context.getDir(name, mode) Erzeugt oder öffnet ein Verzeichnis

17 Interner Speicher Weitere Methoden Context.deleteFile(name) Entfernt die angegebene Datei Context.fileList() Listet alle mit der App assoziierten (internen) Dateien auf

18 Interner Speicher Weitere Methoden Context.getCacheDir() Gibt den Pfad zum Verzeichnis für Cache- Dateien zurück File.createTempFile(prefix, suffix) Erzeugt eine temporäre Datei im temp- Verzeichnis

19 Externer Speicher Im Gegensatz zum internen Speicher gibt es bei externem Besonderheiten zu beachten: Daten können von jedermann gelesen werden Speicher muss nicht immer verfügbar sein (SD-Karte kann entfernt werden)

20 Externer Speicher Verfügbarkeit des ext. Speichers prüfen private boolean mextstoragereadable = false;! private boolean mextstoragewritable = false;!...! // Überprüft, ob der externe Speicher gelesen und geschrieben werden kann! private void checkavailability() { // Status des externen Speichers abrufen String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) {! // Speicher kann gelesen und geschrieben werden! mextstoragereadable = true;! mextstoragewritable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {! // Speicher kann nur gelesen werden! mextstoragereadable = true;! mextstoragewritable = false; } else {! // Speicher ist z.b. entfernt oder hat kein unterstütztes Dateisystem! mextstoragereadable = false;! mextstoragewritable = false; }! }

21 Externer Speicher Unterscheidung zwischen App-eigenen Daten und geteilten Daten App-eigene Daten sind nur für die eigene App relevant und werden bei Deinstallation mit gelöscht Geteilte Daten können auch von anderen Apps interpretiert werden (Musik, Bilder, etc.)

22 Externer Speicher Zugriff auf App-eigene Daten // Methode, um auf externen Speicher zuzugreifen private void accessfiles() { // Verfügbarkeit des ext. Speichers prüfen checkavailability();... // bis API Level 7 (Eclair) File extstore = Environment.getExternalStorageDirectory(); File extappdir7 = new File(extStore,! "Android" + File.separator +! "data" + File.separator +! getpackagename() + File.separator +! "files"); extappdir7.mkdirs(); // ab API Level 8 (Froyo) File extappdir8 = getexternalfilesdir(null); //... // Standard Java Dateiarbeit, wie gehabt //...! }

23 Externer Speicher Geteilte Daten sollten in öffentlichen Verzeichnissen abgelegt werden Bsp.: /Music, /Podcasts, /Alarms, /Download, etc.

24 Externer Speicher auf geteilte Daten zugreifen private void accesspublicfiles() { // Verfügbarkeit des ext. Speichers prüfen checkavailability();... // öffentliches Verzeichnis für Musik File musicdir = null; // bis API Level 7 File extdir = Environment.getExternalStorageDirectory(); musicdir = new File(extDir, "Music"); // ab API Level 8 musicdir = Environment!.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); // Danach, wie gewohnt File musicfile = new File(musicDir, "mymusic.mp3"); musicfile.createnewfile();! }

25 Externer Speicher Temporäre Dateien auf den externen Speicher schreiben private void cachefiles() { // Verfügbarkeit des ext. Speichers prüfen checkavailability(); //... File cachedir = null; // bis API Level 7 File extdir = Environment.getExternalStorageDirectory(); cachedir = new File(extDir, "/Android/data/" + getpackagename() + "/cache/"); // ab API Level 8 cachedir = getexternalcachedir(); // Erstellen der temporären Datei File cachefile = File.createTempFile("myPrefix", "mysuffix", cachedir);! }

26 Datenbanken

27 SQLite SQLite ist die Standard Datenbank-Engine, die in Android verwendet wird optimiert für Embedded Systems zeichnet sich aus durch Abgeschlossenheit, Serverlosigkeit Minimal- bis 0-Konfiguration unterstützt Standard SQL

28 SQLite Daten werden in SQLite durch sogenannte Storage Classes repräsentiert Jedem Wert wird ein Datentyp zugeordnet

29 Storage Classes Datentyp Beschreibung NULL INTEGER REAL TEXT BLOB Null-Wert vorzeichenbehaftete Ganzzahl (1-8 Byte) Dezimalzahl (8 Byte) String Binärdaten

30 Storage Classes Datentyp Konvertierung Darstellung Boolean INTEGER 0 = false, 1 = true Date/ Time TEXT REAL INTEGER ISO8601: YY-MM-DD HH:MM.SS.SSS Zeit in Tagen seit v.chr. 12:00 UNIX-Zeit, Sekunden seit :00:00 UTC

31 Datentypen Alle Standard SQL-Datentypen können verwendet werden Integer, Numeric, Decimal, Float, Real, Double Varchar, Char Date, Time, Timestamp Boolean Blob, Clob

32 Operatoren * / % + - << >> & < <= > >= = ==!= <> IS IS NOT IN LIKE GLOB AND OR siehe:

33 Datenbankfunktionen Kernfunktionen abs, hex, min, max, random, round,... substr, trim, replace, upper, lower,... siehe: lang_corefunc.html

34 Datenbankfunktionen Aggregatfunktionen min, max, avg, count, sum weitere: lang_aggfunc.html Datum & Zeit date, time, datetime, strftime

35 SQLiteOpenHelper abstrakte Oberklasse für DB-Zugriffe empfohlene Schnittstelle zum Erstellen, Öffnen und Aktualisieren von Datenbanken

36 SQLiteOpenHelper Wenn von SQLiteOpenHelper abgeleitet wird, müssen folgende Methode überschrieben werden Konstruktor: Hier wird dem super Konstruktor der Context, Datenbankname und -version mitgegeben oncreate(): wird aufgerufen, wenn die Datenbank erstellt wird. Hier werden SQL Statements ausgeführt, um die

37 SQLiteOpenHelper onupgrade(): wird aufgerufen, wenn eine Datenbankversion gefunden wurde, die älter ist, als die aktuelle. Hier werden alte Datenbanktabellen ausgelesen, gelöscht und neue Tabellen angelegt. ondowngrade(): ist das Pendant zu der Methdode onupgrade() (ab API 11)

38 SQLiteOpenHelper Beispiel: Erstellung einer Datenbank, mit der TODOs gespeichert werden können Datenmodell: todo date title description Integer Text Text

39 DatabaseHelper // Hilfsklasse zum Erstellen, Aktualisieren und Öffnen der Datenbank public class DatabaseHelper extends SQLiteOpenHelper {! public static final String DATABASE_NAME = "todo.db";! // Datenbankname! private static final int DATABASE_VERSION = 1;! // Datenbankversion!! public static final String TABLE_NAME = "todo";!! public static final String DATE_FIELD_NAME = "date";! public static final String DATE_FIELD_TYPE = "INTEGER";! public static final String TITLE_FIELD_NAME = "title";! public static final String TITLE_FIELD_TYPE = "TEXT";! public static final String DESCR_FIELD_NAME = "description";! public static final String DESCR_FIELD_TYPE = "TEXT";!! // SQL statement zum Erstellen der Tabelle! private static final String TABLE_CREATE =! "CREATE TABLE " + TABLE_NAME + "(" + DATE_FIELD_NAME + " " + DATE_FIELD_TYPE + ", " + TITLE_FIELD_NAME + " " + TITLE_FIELD_TYPE + ", " + DESCR_FIELD_NAME + " " + DESCR_FIELD_TYPE + ")";!! // Konstruktor! public DatabaseHelper(Context context) { super(context,! // der Context! DATABASE_NAME, // Datenbankname! null, // CursorFactory! DATABASE_VERSION);! // Datenbankversion! }!! //...

40 DatabaseHelper // Hilfsklasse zum Erstellen, Aktualisieren und Öffnen der Datenbank public class DatabaseHelper extends SQLiteOpenHelper {! // Wird aufgerufen, wenn die DB das erste mal erstellt wird! public void oncreate(sqlitedatabase db) { try {! db.execsql(table_create); } catch (SQLException ex) {! Log.e("DatabaseHelper", "error creating tables", ex); }! }! public void onupgrade(sqlitedatabase db, int oldver, int newver) { // alte Tabellen auslesen und löschen, neue Tabellen anlegen // alten Inhalt in neue Tabellen einfügen! }!! // ab API-Level 11! public void ondowngrade(sqlitedatabase db, int oldver, int newver) { // alte Tabellen auslesen und löschen, neue Tabellen anlegen // alten Inhalt in neue Tabellen einfügen! } }

41 Daten abfragen Mit der Methode getreadabledatabase() wird aus dem SQLiteOpenHelper eine lesbare Datenbankinstanz erzeugt Mit der query()-methode der DB Instanz können Daten gelesen werden Die query() Methode besitzt einige Parameter, die einer SQL-Abfrage entsprechen

42 Daten abfragen query()-parameter table: der Tabellenname columns: String Array, das die abzufragenden Spaltennamen enthält oder null für alle Spalten selection: entspricht der WHERE-Klausel eines SQL-Statements ohne das WHERE Schlüsselwort

43 Daten abfragen query()-parameter selectionargs: dient der Parametrisierung der selection groupby: dient der Gruppierung von Zeilen in Verbindung mit Aggregatfunktionen having: Filter für Gruppierungen

44 Daten abfragen query()-parameter orderby: dient der Sortierung des Ergebnisses nach einer Spalte limit: begrenzt die Anzahl der Ergebnisse

45 Daten abfragen // Methode zum abfragen von Daten aus der DB private void doselect() {! // Datenbank zum Lesen öffnen! SQLiteDatabase db = new DatabaseHelper(this).getReadableDatabase();! // query(string table, String[] columns, String selection, String[]! // selectionargs, String groupby, String having, String orderby,! // String limit)! Cursor result = db.query(! DatabaseHelper.TABLE_NAME, null, null, null, null, null,! DatabaseHelper.DATE_FIELD_NAME, null);! // Ergebnis verarbeiten! // Datenbank schließen! db.close(); }

46 Daten abfragen Die query() Methode der Datenbank- Instanz liefert einen Cursor zurück Cursor repräsentieren das Ergebnis der Datenbankabfrage Ein Cursor besitzt einen Zeiger, mit dem man datensatzweise über das ResultSet navigieren kann

47 Daten abfragen Nützliche Cursor Methoden getcount(): gibt die Anzahl der Datensätze im Cursor an moveto[first, Next, Last](): bewegt den Datensatzzeiger im Cursor getposition(): gibt die aktuelle Zeigerposition im Cursor zurück

48 Daten abfragen Nützliche Cursor Methoden getcolumnindex(): gibt den Index zum übergebenen Spaltennamen zurück get[long,string,int,short,...](): gibt den Wert im Datensatz für den angegebenen Spaltenindex zurück

49 Daten abfragen // Methode zum abfragen von Daten aus der DB private void doselect() {! // Datenbank zum Lesen öffnen und query ausführen! Cursor result = db.query(...);! if (result.movetofirst()) { // wenn Cursor nicht leer // Spaltenindex vom Datums- und Titel-Feld abrufen int dateidx = result.getcolumnindex(databasehelper.date_field_name); int titleidx = result.getcolumnindex(databasehelper.title_field_name); do {! // Datum und Titel auslesen! long date = result.getlong(dateidx);! String title = result.getstring(titleidx);! //... und verarbeiten! Log.d(LOG_TAG, new Date(date) + " " + title); } while (result.movetonext()); // solange Datensätze vorhanden! }! // Cursor direkt wieder schließen, um Ressourcen freizugeben! result.close();! // Datenbank schließen! db.close(); }

50 Daten abfragen Zur Abfrage von Daten können auch Standard SQL Statements verwendet werden Optional können diese parametrisiert werden

51 Daten abfragen public void dorawselect() {! // Datenbank zum Lesen öffnen! SQLiteDatabase db = new DatabaseHelper(this).getReadableDatabase();! // SQL Statement erstellen! String sql = "SELECT * FROM " + DatabaseHelper.TABLE_NAME +! " ORDER BY " + DatabaseHelper.DATE_FIELD_NAME;! // query ausführen! Cursor result = db.rawquery(sql, null);! if (result.movetofirst()) { // wenn Cursor nicht leer // Spaltenindex vom Datums- und Titel-Feld abrufen int dateidx = result.getcolumnindex(databasehelper.date_field_name); int titleidx = result.getcolumnindex(databasehelper.title_field_name); do { // für jeden Datensatz! // Datum und Titel auslesen! long date = result.getlong(dateidx);! String title = result.getstring(titleidx);! //... und verarbeiten! Log.d(LOG_TAG, new Date(date) + " " + title); } while (result.movetonext()); // solange Datensätze vorhanden! } result.close();! // Cursor schließen! db.close(); // Datenbank schließen }

52 Daten einfügen Um Datensätze in die Datenbank einzufügen werden ContentValues Objekte verwendet Ein ContentValues Objekt repräsentiert einen Datensatz in einer Tabelle Ein CotentValues Objekt besitzt put() Methoden, die einen Schlüssel und einen Wert erhalten

53 Daten einfügen Schlüssel ist der Spaltenname aus der Datenbank und dazu der zu setzende Wert ContentValues Objekte werden unter Angabe der Tabelle per insert() Methode in die Datenbank eingefügt

54 Daten einfügen! // Methode zum Einfügen von Daten in die DB! private void doinsert() { // Datenbank zum Schreiben öffnen SQLiteDatabase db = mdbhelper.getwritabledatabase(); // Datensatz erstellen ContentValues vals = new ContentValues(); vals.put(databasehelper.date_field_name, System.currentTimeMillis()); vals.put(databasehelper.title_field_name, "meintitel"); vals.put(databasehelper.descr_field_name, "meinebeschreibung"); // Datensatz in die Datenbank einfügen db.insert(databasehelper.table_name, null, vals); // Datenbank schließen db.close();! }

55 Daten aktualisieren Die Aktualisierung von Datensätzen funktioniert ähnlich wie das Einfügen Es wird ein ContentValues Objekt mit den neuen Daten erzeugt und per update() Methode abgeschickt

56 Daten aktualisieren! // Mehtode zum Aktualisieren von Datensätzen! private void doupdate() { // Datenbank zum Schreiben öffnen SQLiteDatabase db = mdbhelper.getwritabledatabase(); // ContentValues Objekt mit den neuen Daten erzeugen ContentValues values = new ContentValues(); values.put(databasehelper.date_field_name, new java.util.date().gettime()); // Datensätze unter Angabe des Tabellennamens und einer // WHERE Bedingung aktualisieren int rows = db.update(databasehelper.table_name, values, DatabaseHelper.DATE_FIELD_NAME + " LIKE 'b%'", null); Log.d(LOG_TAG, "affected rows: " + rows);! // Datenbank schließen db.close();! }

57 Daten löschen Datensätze werden gelöscht, indem eine WHERE Bedingung angegeben wird, die auf die zu löschende Datensätze zutrifft

58 Daten löschen! // Methode zum Löschen von Datensätzen! private void dodelete() { // Datenbank zum Schreiben öffnen SQLiteDatabase db = mdbhelper.getwritabledatabase(); // Datensätze unter Angabe einer WHERE Bedingung löschen int rows = db.delete(databasehelper.table_name, DatabaseHelper.DATE_FIELD_NAME + " < date('now')", null); // Anzahl gelöschter Datensätze löschen Log.d(LOG_TAG, rows + " rows deleted"); // Datenbank schließen db.close();! }

59 Raw Queries Einfügen, Aktualisieren und Löschen private void dorawinsertupdatedelete() {! // Datenbank zum Schreiben öffnen! SQLiteDatabase db = new DatabaseHelper(this).getWritableDatabase();!! // insert statement erstellen & abschicken! String insertsql = "INSERT INTO " + DatabaseHelper.TABLE_NAME + " VALUES(" + System.currentTimeMillis() + ", 'mein Titel', 'meinebeschreibung')";! db.execsql(insertsql);! // update statement erstellen & abschicken! String updatesql = "UPDATE " + DatabaseHelper.TABLE_NAME + " SET " + DatabaseHelper.TITLE_FIELD_NAME + "=neuertitel WHERE " + DatabaseHelper.DATE_FIELD_NAME + "<" + System.currentTimeMillis();! db.execsql(updatesql);! // delete statement erstellen & abschicken! String deletesql = "DELETE FROM " + DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.TITLE_FIELD_NAME + " LIKE 'n%'";! db.execsql(deletesql);! db.close(); // Datenbank schließen }

60 Transaktionen Standardmäßig wird jedes SQL-Statement in einer eigenen Transaktion ausgeführt Gründe, um einen eigenen Transaktionsrahmen zu setzen: succeed or fail as a whole Performance

61 Transaktionen Transaktionen werden mit begintransaction() gestartet... und mit endtransaction() beendet Um die Transaktion als erfolgreich zu markieren, muss vor dem Aufruf von endtransaction() die Methode settransactionsuccessful() aufgerufen werden

62 Transaktionen Transaktionen ausführen private void dotransaction() {! // Datenbank zum Schreiben öffnen! SQLiteDatabase db = new DatabaseHelper(this).getWritableDatabase();!! try { // Transaktion starten db.begintransaction(); /* auf der Datenbank arbeiten */ // Transaktion als erfolgreich markieren db.settransactionsuccessful();! } catch (Exception ex) { // Fehler behandeln! } finally { // Transaktion beenden db.endtransaction();! } }

63 CursorAdapter

64 CursorAdapter Die Ergebnisse von Datenbankabfragen können über einen Adapter direkt in AdapterViews (ListView, SpinnerView) dargestellt werden Hierfür werden CursorAdapter verwendet, die den AdapterViews ebenso wie ArrayAdapter ihre Daten zur Verfügung stellen

65 CursorAdapter Exkurs: Eigene List Layouts Einträge in einer Liste können mit einem eigenen Layout versehen werden Layout-Dateien werden genauso erstellt, wie bei Activity-Layouts

66 CursorAdapter Exkurs: Eigene List Layouts <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="..." android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"/>

67 CursorAdapter Exkurs: Eigene List Layouts Layout verwenden private void usecustomlistlayout() {! // ListView Referenz abrufen! ListView listview = (ListView) findviewbyid(r.id.listview1);! // Adapter bekommt die Layout Referenz! // zum angepassten Layout! ArrayAdapter<String> listadapter = new ArrayAdapter<String>(! this, R.layout.list_item);! //... wie gehabt }

68 CursorAdapter CursorAdapter stellen eine Brücke zwischen AdapterViews und Cursor Objekten her Im CursorAdapter wird angegeben, welche Spalte auf welches Element im ListItem Layout abgebildet wird Das Auslesen des Cursors und Setzen der ListItems wird vom Adapter übernommen

69 CursorAdapter private void setlistcursoradapter() {! // Datenbank öffnen und Abfrage ausführen! SQLiteDatabase db = new DbHelper(this).getReadableDatabase();! String sql = "select _id, title, datetime('now') as date from todo";! Cursor cursor = db.rawquery(sql, null);! // gibt an, welche Spalten in der ListView dargestellt werden sollen! String[] from = new String[] { DbHelper.TITLE_FIELD_NAME, DbHelper.DATE_FIELD_NAME};! // gibt an, welche Spalte in welcher View dargestellt werden soll! int[] to = new int[]{r.id.title, R.id.date};! // CursorAdapter erstellen! SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.list_item, cursor, from, to, 0);! // Adapter sezten! ListView lv = (ListView) findviewbyid(r.id.listview1);! lv.setadapter(sca);! }

70 CursorAdapter Hinweis: Um einen SimpleCursorAdapter zu nutzen, muss die verwendete Tabelle eine Spalte _id besitzen!

71 Literatur I. Mark L. Murphy: The Busy Coder s Guide To Android Development, Version 4.3, 2012 II. Thomas Künneth: Android 3 - Apps entwickeln mit dem Android SDK Galileo Press, 2011 III. data/data-storage.html

Mobile App Development. - Persistenz -

Mobile App Development. - Persistenz - Mobile App Development - Persistenz - Inhalt Shared Preferences Dateien Datenbanken ORM 2 Shared Preferences Shared Preferences Framework zum Speichern von Key-Value- Paaren Datentypen: boolean, float,

Mehr

Android Java Specifics / Basic IO

Android Java Specifics / Basic IO Dalvik virtual machine Registermaschine anstelle einer Stackmaschine Optimiert für geringen Speicherverbrauch Umwandlung von.class Dateien in.dex-format mit Hilfe von dx Jedes Programm läuft als eigener

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

3. Persistenz und Datenbanken

3. Persistenz und Datenbanken 3. Persistenz und Datenbanken Lernziele 3. Persistenz und Datenbanken Themen/Lernziele: Einstellungen Dateien lesen und schreiben Datenbanken mit SQLite Allgemeine Schnittstelle zu Datenquellen: Content

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Android Persistenz Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 3 besprechen (inkl. Repetition) Die wichtigsten

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

MySQL, phpmyadmin & SQL. Kurzübersicht

MySQL, phpmyadmin & SQL. Kurzübersicht MySQL, phpmyadmin & SQL Kurzübersicht Referenzen MySQL Documentation: http://dev.mysql.com/doc PHP 5 / MySQL5. Studienausgabe. Praxisbuch und Referenz (Kannengießer & Kannengießer) 2 Datenbank anlegen

Mehr

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen Content Providers Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen Entkopplung der Daten-Schicht von der Anwendungsschicht Zugriff erfolgt URI-basiert Kontrolle der Zugriffsrechte eingebaute

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 SQLite als Datenbank-Managementsystem (DBMS) wenige 100 KB schlanke Programmbibliothek Aktuelle Version: 3.8.1 Für die

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing. PHP + MySQL Die MySQL-Datenbank Zusammenspiel Apache, PHP, PHPMyAdmin und MySQL PHPMyAdmin Verwaltungstool Nutzer Datei.php oder Datei.pl Apache HTTP-Server PHP Scriptsprache Perl Scriptsprache MySQL Datenbank

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch 12.10.2010. Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch 12.10.2010. Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung Datenbanken 5 Tabellen Karl Meier karl.meier@kasec.ch 12.10.2010 Tabellen erstellen en Integritätsregeln Inhalt Domänen verwenden Tabellen anzeigen, ändern, löschen Übung 2 1 Einfache Tabellen erstellen

Mehr

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden.

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden. Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de) MySQL

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

App-Entwicklung mit Android - Teil 2

App-Entwicklung mit Android - Teil 2 Entwicklungsumgebung Android Studio App-Entwicklung mit Android - Teil 2 Aktuell ist Android Studio die offizielle Entwicklungsumgebung für Android Apps und löst die bisher verwendete Lösung von Eclipse

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Android SQLite Android Kurs Stufe 3 (Grüngurt)

Android SQLite Android Kurs Stufe 3 (Grüngurt) Android Kurs Stufe 3 (Grüngurt) Inhaltsverzeichnis 1 SQLite - allgemeines... 2 2 Die Bibliotheken... 2 2.1 SQLiteOpenHelper... 2 2.2 SQLiteDatabase... 4 2.3 Cursor... 4 2.4 ContentValues... 5 3 Best Practice...

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Android GUI Entwicklung

Android GUI Entwicklung Android GUI Entwicklung Aktuelle Technologien verteilter Java Anwendungen Referent: Stefan Haupt Hello World! Agenda Einführung & Motivation Android Applikationen UI-Komponenten Events Ressourcen Kommunikation

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter

Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter Einführung in die Android App-Entwicklung Patrick Treyer und Jannis Pinter Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

Mehr

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL. 2 Grundlagen von PL/SQL Grundelemente von PL/SQL. 2.1 Übersicht Themen des Kapitels Grundlagen von PL/SQL Themen des Kapitels PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren Im Kapitel Grundlagen

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Mobile App Development. - Grafische Oberflächen 2 -

Mobile App Development. - Grafische Oberflächen 2 - Mobile App Development - Grafische Oberflächen 2 - Inhalt Dimensionen Layouting Menüs Activities starten Übung Dimensionen Dimensionen Analog zu Strings und Farben können Dimensionen definiert werden Dimensionen

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC) Java Database Connectivity-API (JDBC) Motivation Design Grundlagen Typen Metadaten Transaktionen Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation Problem: Zugriff auf ein DBMS ist herstellerabhängig

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Datenbankentwicklung mit PureBasic

Datenbankentwicklung mit PureBasic Datenbankentwicklung mit PureBasic Datenbanken stellen heutzutage wichtige Informationsquellen für viele Bereiche der Wirtschaft, Verwaltung aber auch im eigenen Haushalt dar. In Datenbanken werden Daten

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

SQL-Anweisungen. SELECT (SQL Data Query Language)

SQL-Anweisungen. SELECT (SQL Data Query Language) SQL-Anweisungen SELECT (SQL Data Query Language) SELECT * SELECT * FROM "meine Tabelle"; SELECT feldname1, feldname2 SELECT feldname1, feldname2 FROM meinetabelle ORDER BY feldname2, feldname1 DESC; WHERE

Mehr

Mobile App Development. - Persistenz -

Mobile App Development. - Persistenz - Mobile App Development - Persistenz - Inhalt Shared Preferences Dateien Datenbanken ORM Shared Preferences Shared Preferences Framework zum Speichern von Key-Value- Paaren Datentypen: boolean, float, int,

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Accounts und Kontakte in Android

Accounts und Kontakte in Android Accounts und Kontakte in Android Die letzten Wochen habe ich daran gearbeitet, die Kontakte der AddressTable von Leonardo und mir ins Android Adressbuch zu bringen. Dazu habe ich die AddressManagement-Applikation

Mehr

Grundkonzepte von SQL

Grundkonzepte von SQL Internet Praktikum im Grundstudium: Grundlagen von SQL Nutzung von phpmyadmin Dr. Guido Rößling Dipl.-Ing. Andreas Hartl Grundkonzepte von SQL Relationale Datenbanken basieren auf Tabellen Objektorientierte

Mehr

Probeklausur Datenbanktechnologie

Probeklausur Datenbanktechnologie Probeklausur Datenbanktechnologie Prof. Dr. Ingo Claßen Name: Vorname: MatrNr: Bewertung 1 25 2 15 3 10 4 10 Übung 40 Σ = 100 Punkte Punkte: Note: Notenspiegel 100 95 1,0 94 90 1,3 89 85 1,7 84 80 2,0

Mehr

desk.modul : WaWi- Export

desk.modul : WaWi- Export desk.modul : WaWi- Export Die Schnittstelle besteht aus einem Programm, welches die Daten aus der OfficeLine ausliest und in eine XML-Datei exportiert. Die Schnittstelle ist als ein eigenständiges Programm

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

5.8 Bibliotheken für PostgreSQL

5.8 Bibliotheken für PostgreSQL 5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9

Mehr

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET Leibniz Universität IT Services Anja Aue Experteneinstellungen in Visual Studio Express Extras Einstellungen Experteneinstellungen. Es werden

Mehr

Android-Apps weitere Möglichkeiten

Android-Apps weitere Möglichkeiten Android-Apps weitere Möglichkeiten 2/20 weitere Möglichkeiten Speichern in der Sandbox OnTouchListener Senden und Empfangen von SMS Anbindung von Datenbanken Der Beschleunigungssensor Übung 3/20 Speichern

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Java: Kapitel 8 Datenbankzugriff mit JDBC Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 8 Einführung in SQL und JDBC Verbindung zur Datenbank

Mehr

Dateneingabe über ein HTML-Formular in eine Datenbank:

Dateneingabe über ein HTML-Formular in eine Datenbank: Dateneingabe über ein HTML-Formular in eine Datenbank: Über ein Eingabeformular mit fünf Eingabefelder sollen Personaldaten in eine Datenbank gespeichert werden: Schritt 1: Erstellen des Eingabeformulars

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

Android Apps. Mentoring SS 16. Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016

Android Apps. Mentoring SS 16. Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016 Android Apps Mentoring SS 16 Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016 Wichtige Dateien MainActivity.java activity_main.xml AndroidManifest.xml Die Dateien MainActivity.java,

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008 Programmieren II Datenbanken Dr. Klaus Höppner SQL Hochschule Darmstadt SS 2008 JDBC 1 / 20 2 / 20 Relationale Datenbanken Beispiele für RDBMS Ein Datenbanksystem ist ein System zur Speicherung von (großen)

Mehr

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN? XML 1 WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN? Mit den verschiedenen Versionen von Access wurde die Unterstützung von XML immer mehr verbessert. Vollständig ist sie aber

Mehr

MySQL: Einfaches Rechnen. www.informatikzentrale.de

MySQL: Einfaches Rechnen. www.informatikzentrale.de MySQL: Einfaches Rechnen Vorweg: Der Merksatz Warum geht Herbert oft laufen? Vorweg: Der Merksatz Warum geht Herbert oft laufen?...... WHERE... GROUP BY... HAVING... ORDER BY... LIMIT Beispieldatenbank

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Eine Einführung in MySQL

Eine Einführung in MySQL LUG Peine Eine Einführung in MySQL Mario Herold LINUX USER GROUP PEINE WWW.LUG- PEINE.ORG This work is licen sed u nd er the Creative Com m on s Attrib ution- - Sh arealike 2.0 Licen se. To view a cop

Mehr

Deinstallationsanleitung

Deinstallationsanleitung Deinstallationsanleitung Einleitung Bei der Deinstallation des Moduls ist es wichtig, dass Sie die Reihenfolge der unten stehenden Schritte exakt einhalten, da es sonst zu Fehlern im Shopsystem kommen

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement Funktion definieren Gibt Summe der Gehälter zurück Aufruf in einem SQL-Statement Dr. Christian Senger Einführung PL/SQL 1 Procedures & Transaktionen CREATE OR REPLACE PROCEDURE write_log ( log_code IN

Mehr

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java)

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) 3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Java Persistence API 2.x. crud + relationships + jp-ql

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

Mehr