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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Begleitskript. zum PHP/MySQL. Kurs

Begleitskript. zum PHP/MySQL. Kurs Begleitskript zum PHP/MySQL Kurs http://www.online-platform.net Dieser Text unterliegt der GNU General Public License. Er darf als ganzes oder in Auszügen kopiert werden, vorausgesetzt, dass sich dieser

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

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

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

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

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

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

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

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

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

17.2 MS-Access Projekte

17.2 MS-Access Projekte 964 Von MS-Access 2000 zum SQL-Server 17.2 MS-Access Projekte MS-Access-Projekte, die die Dateiendung adp besitzen, werden als Front-End-Anwendung verwendet. Für die Back-End-Seite gibt es mehrere Möglichkeiten.

Mehr

ORACLE und IBM DB2 Datentypen 14.12.2011

ORACLE und IBM DB2 Datentypen 14.12.2011 1/27 ORACLE und IBM DB2 Datentypen PHP-User-Group Stuttgart 14.12.2011 ORACLE Datentypen ein Überblick IBM DB2 Datentypen ein Überblick 2/27 ORACLE und IBM DB2 Datentypen Wer Wer bin bin ich ich?? Thomas

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1 SQL-Loader Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1 Beschreibung Definition transferiert Daten aus einer oder mehreren externen Dateien in eine oder mehrere Tabellen einer Oracle-Datenbank.

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL )

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL ) Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 6 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 1.12.2003 SQL-DDL und SQL-Anfragen

Mehr

15 Bilder und Dateien im SQL Server

15 Bilder und Dateien im SQL Server Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 15 Bilder und Dateien im SQL Server Eines der großen Probleme von Access-Datenbanken ist der vergleichsweise geringe Speicher platz. Sicher,

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

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

Mobile App Development. - Activities -

Mobile App Development. - Activities - Mobile App Development - Activities - Inhalt Activity Lifecycle Erstellen Starten & Stoppen Spezielle Activities Ac3vi3es Ac3vi3es Definition Eine Aktivität repräsentiert eine Interaktion mit einem Benutzer

Mehr

PHP Übungsaufgabe 3 1 / 5. Doing Web Apps. PHP Übungsaufgabe 3

PHP Übungsaufgabe 3 1 / 5. Doing Web Apps. PHP Übungsaufgabe 3 1 / 5 Doing Web Apps PHP Übungsaufgabe 3 Werkzeuge Text-Editor, beispielsweise Notepad++ Webserver mit aktiviertem PHP Modul + MySQL-Datenbank Unterlagen Ziele SelfHTML PHP API Handbuch Alle Dokumente

Mehr

Überleben im Funkloch

Überleben im Funkloch Überleben im Funkloch Offlinefähige Apps für Android entwickeln Christian Janz (@c_janz ) christian.janz@bridging-it.de Christian Janz Consultant im Bereich Softwareentwicklung Java/JEE bei Bridging IT

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Verteidigung gegen SQL Injection Attacks

Verteidigung gegen SQL Injection Attacks Verteidigung gegen SQL Injection Attacks Semesterarbeit SS 2003 Daniel Lutz danlutz@watz.ch 1 Inhalt Motivation Demo-Applikation Beispiele von Attacken Massnahmen zur Verteidigung Schlussfolgerungen 2

Mehr

Tutorial. Programmierung einer Android-Applikation. Teil 1

Tutorial. Programmierung einer Android-Applikation. Teil 1 Tutorial Programmierung einer Android-Applikation Teil 1 Autor: Oliver Matle Datum: März 2014, Version 1.0 Autor: Oliver Matle, www.matletarium.de Seite 1 von 28 Inhaltsverzeichnis Kapitel 1 Einleitung...3

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Objektrelationale, erweiterbare Datenbanken WS 04/05

Objektrelationale, erweiterbare Datenbanken WS 04/05 Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

SINT Rest App Documentation

SINT Rest App Documentation SINT Rest App Documentation Release 1.0 Florian Sachs September 04, 2015 Contents 1 Applikation 3 2 Rest Service 5 3 SOAP Service 7 4 Technologiestack 9 5 Deployment 11 6 Aufgabe 1: Google Webservice

Mehr

Entwickeln für Android OS

Entwickeln für Android OS Entwickeln für Android OS Am Beispiel der WAPLA Wissenschaftliche Arbeitstechniken und Präsentation Lern Applikation Christian Kain Kevin Kain Wolfgang Kremser Gregor Bankhamer Warum Android? Verbreitung

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP.

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP. Ziele: Eine Datenbank anlegen mit SQL Daten eingeben mit SQL Abfragen stellen mit SQL und PHP 1 Datenbankserver Entwickelt von der schwedischen Aktiengesellschaft MySQL Unter GNU General Public License

Mehr

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation MySQL-Job-Automation Managed User Jobs JOB SCHEDULER Dokumentation Juli 2005 Software- und Organisations-Service GmbH Giesebrechtstr. 15 D-10629 Berlin Telefon (030) 86 47 90-0 Telefax (030) 861 33 35

Mehr

Dokumentation QuickHMI-Schnittstelle. Datenbanken

Dokumentation QuickHMI-Schnittstelle. Datenbanken Dokumentation QuickHMI-Schnittstelle für SQLServer Datenbanken Version 1.0 D-28359 Bremen info@indi-systems.de Tel + 49 421-989703-30 Fax + 49 421-989703-39 Inhaltsverzeichnis Was ist die QuickHMI-Schnittstelle

Mehr

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at DB2 & SQL E I N F Ü H R U N G T U N I N G O P T I M I E R U N G S E C R E T S ANDREAS PROUZA andreaspr@aon.at andreas@prouza.at http://www.prouza.at Wien, 2015-03-27 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis...

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java und Datenbanksysteme Datenbankanbindung mit JDBC Java und Datenbanksysteme Datenbankanbindung mit JDBC 30.05.2001 Stefan Niederhauser sn@atelier-w.ch 1-Einführung Datenbanksysteme Java und Datenbanken: JDBC Geschichte der JDBC-Versionen Vergleich von

Mehr

FileMaker und Java...und es öffnen sich neue Welten!

FileMaker und Java...und es öffnen sich neue Welten! FileMaker und Java...und es öffnen sich neue Welten! schubec GmbH Inhaber und Geschäftsführer der schubec GmbH Betreiber von FileMakerProfis.de PHP Java Google Web Toolkit Vaadin Wicket SQL Datenbanken

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Die XML-Schnittstelle von FreelancerWelt.de Projektimport

Die XML-Schnittstelle von FreelancerWelt.de Projektimport Die XML-Schnittstelle von FreelancerWelt.de Projektimport Die Schnittstelle ermöglicht es neue IT Projekte auf FreelancerWelt.de automatisch einzustellen, bestehende zu aktualisieren oder zu löschen. Wenn

Mehr

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager / address manager FILESTREAM für Microsoft SQL Server aktivieren FILESTREAM für Microsoft SQL Server aktivieren

Mehr

Timer-Dienst (070212)

Timer-Dienst (070212) Timer-Dienst (070212) Timer-Dienst (070212)...1 Voraussetzungen...1 Installation...1 Dienst konfigurieren...4 Dienst für mehrere Instanzen und / oder mehrere Datenbanken konfigurieren...5 Eventlog-Einträge

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema..

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. Change Log 15.09.2015 Version 2.0.3.9 Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. 15.01.2015 Version 2.0.3.8 Unter Optionen können jetzt zusätzliche Parameter

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Ralf Eggert. Zend Framework 2. Das Praxisbuch

Ralf Eggert. Zend Framework 2. Das Praxisbuch Ralf Eggert Zend Framework 2 Das Praxisbuch 7.4 Ein Anwendungsmodul entwickeln 7.3.7 Weitere Konfigurationen Der Modul-Manager ermöglicht auch die Konfiguration weiterer Elemente, für die entsprechende

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen C3: Structured Query Language Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse erworben: Sie können elementaren

Mehr