Ausarbeitung des Referats JDBC

Größe: px
Ab Seite anzeigen:

Download "Ausarbeitung des Referats JDBC"

Transkript

1 . Markus Zywitza Markus Zywitza Matr.-Nr Ausarbeitung des Referats JDBC Datenbank-Anbindung unter Java

2 JDBC 1.1 Datenbank-Anbindung unter Java Grundlegendes zu JDBC... 3 X/Open SQL-CLI... 3 JDBC-Versionen... 3 Kurzeinführung... 4 Beispiel... 4 Erklärungen zum Beispiel... 4 Ausnahmebehandlung... 5 Die Ausnahme SQLException... 5 Warnungen... 7 Die Ausnahme DataTruncation... 7 Treiber und Treiberverwaltung... 7 Treibertypen... 7 Treiberregistrierung Verbindungsaufbau JDBC-URL Verbindungserstellung Datenbankanweisungen Einfache Anweisungen Vorkompilierte Anweisungen Prozeduraufrufe Transaktionen Metadaten Datentypen Anhang Anmerkung: Die folgenden Schreibweisen werden im Dokument benutzt: - Kursiv für Java-Klassen und Pakete (z.bsp. java.lang.object) - Großbuchstaben für SQL-Schlüsselwörter (z.bsp. CREATE) - Courier New für Beispiele und Java-Methoden und Schlüsselwörter (z.bsp. tostring()) 2

3 Grundlegendes zu JDBC JDBC steht für Java Database Connectivity. Es handelt sich um ein Java-API zum Datenbankanbindung. Die Vorteile von JDBC sind: - JDBC basiert auf SQL-CLI (Call Level Interface) von X/Open. Dadurch ist eine weitestgehende Datenbankunabhängigkeit gewährleistet. - Aufgrund der Eigenschaften der Sprache Java ist JDBC plattformunabhängig. Ein Programm kann ohne Änderung des Quelltextes auf verschiedene Datenbanksysteme auf unterschiedlichen Plattformen zugreifen. - JDBC unterstützt eine Mehrschichtenarchitektur. Unterstützt werden je nach Datenbanktreiber eine zweischichtige oder eine dreischichtige Architektur. Ebenso ist es möglich, Desktopdatenbanken zu benutzen. X/Open SQL-CLI Bei CLI (Call Level Interface) handelt es sich um eine Datenbankschnittstelle, die von X/Open definiert wurde. CLI ist eine Schnittstelle auf Aufrufebene. D.h. SQL-Aufrufe werden im Klartext an den entsprechenden Treiber übergeben. Dieser wandelt die Aufrufe in das native Datenbankprotokoll um. Neben JDBC ist die wohl bekannteste SQL-CLI-Implementation ODBC der Fa. Microsoft. ODBC ist mittlerweile bereits auch auf UNIX-Systemen verfügbar. JDBC-Versionen Die vorliegende Ausarbeitung behandelt JDBC in der Version 1.1. JDBC 1.0 wurde zuerst mit dem Java SDK 1.1 ausgeliefert. Für das JDK 1.0 ist JDBC gesondert erhältlich. JDBC wurde zunächst auf Basis von 1.0 ausgebaut. Diese Versionen sind mit den Nummern 1.1 bis 1.2 bezeichnet. Mit Erscheinen von Java2 (JDK 1.2) wurde JDBC 2.0 entwickelt. JDBC 2.0 wird in zwei Teile aufgeteilt: - Die Klassen und Interfaces des Pakets java.sql werden als Core API bezeichnet. Es handelt sich dabei um die Weiterentwicklung der JDBC 1.x API. Neu hinzugekommen sind beispielsweise navigierbare Ergebnistabellen und Unterstützung für CLOBs und BLOBs (Binary / Character Large Object). - Das Paket javax.sql enthält die Optional API. Dabei handelt es sich vor allem um Funktionalität zur Ermöglichung verteilter Transaktionen. Die Unterschiede zwischen den JDBC 1.x-Versionen sind marginal. Obwohl die gängigen JDKs mittlerweile alle über das JDBC 2.x verfügen, sind viele JDBC-Treiber noch auf die 1.x-API ausgelegt und unterstützen die Funktionen von JDBC 2 nicht. 3

4 Kurzeinführung Beispiel package example; import java.sql.*; public class Example1 { public static void main(string args[]) throws Exception { Class.forName("org.enhydra.instantdb.jdbc.idbDriver"); Connection c = DriverManager.getConnection ( "jdbc:idb:databaseurl"); Statement s=c.createstatement(); ResultSet r=s.executequery("select * FROM Table"); while (r.next()) { System.out.println(r.getString("Spalte1")+" "+ r.getstring("spalte2")); c.close(); Erklärungen zum Beispiel Laden des Datenbanktreibers Der Befehl Class.forName("com.package.SampleDriver") lädt, instanziiert und registriert die Instanz des Datenbanktreibers im Treibermanager. Der registrierte Datenbanktreiber wird in einem statischen Treiberregister gehalten. Auf diese spezielle Methode der Objektinitialisierung wird in dem Abschnitt über Treiber und Treiberverwaltung näher eingegangen. Verbindungserstellung Die Datenbankverbindung wird mit der statischen Methode getconnection(string url) der Klasse DriverManager erstellt. Um die Datenbank zu identifizieren, wird der Methode eine spezielle URL übergeben. Auf diese wird im entsprechenden Abschnitt noch eingegangen. Ist die Verbindung einmal erstellt, ist das Programm für die Verwaltung der Verbindung zuständig. Da die Erstellung einer Verbindung sehr zeitaufwändig, sollte sie möglichst lange im Speicher gehalten werden. Erstellen einer Datenbankanfrage Mit dem Befehl createstatement() wird ein Statement-Objekt instanziiert. Dieses kann benutzt werden, um Anfragen an die Datenbank zu erstellen. Ausführen der Anfrage Durch die Methode executequery(string query) wird die Anfrage ausgeführt. Die Methode liefert eine Instanz der Klasse ResultSet zurück. Dabei handelt es sich um eine temporäre Tabelle mit den Ergebnissen der Anfrage. Auswerten der Anfrage Die Auswertung der SQL-Anfrage erfolgt innerhalb einer while-schleife. Die Methode next() von ResultSet verschiebt den Cursor der Ergebnistabelle jeweils eine Reihe nach unten. Die Rückgabe ist solange true, wie der Cursor nach der Verschiebung noch auf eine gültige Reihe zeigt. Vor dem ersten Aufruf von next() ist der Cursor noch nicht initialisiert. Ein Auslesen zu diesem Zeitpunkt liefert eine Ausnahme. 4

5 Beim Umgang mit ResultSet-Objekten müssen die folgenden Regeln beachtet werden: - Zu jedem Statement kann es nur ein gültiges ResultSet geben. - Auf jede Zeile kann nur einmal zugegriffen werden. Die Navigation erfolgt stets vorwärts. - Die Datenelemente können nur einmal abgerufen werden. Dies muss in der Reihenfolge geschehen, in der die Spalten in der SQL-Abfrage angegeben werden. Schließen der Verbindung Das Schließen einer Verbindung erfolgt mit close(). Dies kann auch von der VM übernommen werden, es ist allerdings nicht zu empfehlen. Durch den Aufruf von close() werden alle Resourcen geschlossen. Dies schließt noch offene Statement- und ResultSet-Objekte mit ein, wodurch weitaus mehr Speicherplatz für die tatsächliche Anwendung zur Verfügung steht. Da das erneute Öffnen einer Verbindung jedoch erhebliche Rechenzeit beansprucht (bei Desktopdatenbanken) bzw. zu Verzögerungen führt (bei Datenbanken in verteilten Umgebungen), sollte eine Verbindung nicht zu früh geschlossen werden. Daher ist der Zeitpunkt zum Schließen einer Verbindung und der damit einhergehenden Freigabe der Ressourcen je nach Anwendung zu entscheiden; eine allgemein gültige Regelung kann hier nicht getroffen werden. Ausnahmebehandlung Im oben behandelten Einführungsbeispiel wurde bewußt die schlechteste Methode der Ausnahmebehandlung gewählt die Weitergabe an den Aufrufer, in diesem Fall die VM. Eine tatsächliche Anwendung sollte eine dezidierte Behandlung auftretender Ausnahmen implementieren. Daher sollte nicht einfach die Oberklasse Exception abgefangen werden. // Schlechtes Beispiel // Anwendungscode... try { // JDBC-Anweisungen catch(exception e) { e.printstacktrace(); // Weiterer Anwendungscode... Insbesondere im Fall von JDBC ist diese Vorgehensweise nicht zu empfehlen. Dies hat zwei Gründe: - Die Ausnahme SQLException bietet mehr Informationen als Exception. - Es können Mehrfachausnahmen auftreten. Die Ausnahme SQLException Diese Ausnahme ist die am meisten benutzte Ausnahme im JDBC-Paket. Fast alle Methoden der einzelnen Klassen können SQLExceptions erzeugen. Die Anzahl der verschiedenen Ausnahmen in JDBC 1.x ist hingegen sehr gering: es existieren nur drei Klassen, die von Exception abgeleitet sind. Die wichtigste von diesen ist SQLException. Zum Vergleich: das Paket java.io enthält 16 verschiedene Ausnahmen (Stand: jdk 1.3). 5

6 Informationen über SQL-Fehler Aufgrund der geringen Mengen an Ausnahmeklassen und der Vielzahl an Fehlermöglichkeiten beim Umgang mit Datenbanken enthält SQLException mehr Informationen als die Oberklasse Exception: - Die Fehlernachricht (analog zu Exception) - Die SQL-Fehlernummer (nach ANSI-92) - Den Fehlercode des Datenbankherstellers Der folgende Codeausschnitt zeigt, wie man diese Informationen erhält: // Beispiel 3 // JDBC-Ausnahmebehandlung try { // JDBC-Anweisungen catch(sqlexception e) { System.err.println("Datenbank-Fehler:"); System.err.println(e.getMessage()); System.err.println("SQL-Fehlerzustand:"+e.getSQLState()); System.err.println("Hersteller-Code:"+e.getErrorCode()); Mehrfachausnahmen Da vollständige SQL-Anweisungen übergeben werden, kann es zu Mehrfachausnahmen kommen. Als Beispiel sei folgende Situation gegeben: Eine fehlerhafte Datenbankanfrage wird gestellt. Einerseits liefert ein inneres Select keine Daten; außerdem existiert die entsprechende Tabelle des äußeren Selects nicht. Das Datenbanksystem erkennt beide Fehler erst bei der Ausführung der Anweisung und gibt zwei Fehler zurück den SQL-State (No Data) und den SQL-State (Invalid SQL Descriptor Name). Da jedoch nur eine Ausnahme geworfen werden kann, muß es eine Möglichkeiten geben, mehrere Ausnahmen zu behandeln. Daher werden mehrere Instanzen von SQLException erzeugt. Weitere Ausnahmen werden in Form einer einfach verketten Liste an das zuerst erzeugte Objekt angehängt. Dieses wird schließlich ausgeworfen. Das folgende Beispiel zeigt die komplette Fehlerbehandlung mit JDBC: // Beispiel 4 // JDBC-Ausnahmebehandlung try { // JDBC-Anweisungen catch(sqlexception e) { while (e!=null) { System.err.println("Datenbank-Fehler:"); System.err.println(e.getMessage()); System.err.println("SQL-Fehlerzustand:"+e.getSQLState()); System.err.println("Hersteller-Code:"+e.getErrorCode()); e=e.getnextexception(); 6

7 Warnungen SQL-Datenbanken kennen auch das Konzept der Warnmeldungen. Dies geschieht immer, wenn eine Ausnahme auftritt, die nicht schwerwiegend genug ist, um den Programmablauf zu unterbrechen. Hierbei handelt es sich um die SQL-States 01xxx. Dies wird durch die Klasse SQLWarning realisiert. Es handelt sich um eine Unterklasse von SQLException, die jedoch nicht geworfen wird. Statt dessen wird eine Warnung an das die Warnung erzeugende Objekt angehängt. Diese kann mit der Methode public SQLWarning getwarnings() abgefragt werden. Eine SQLWarning kann an Instanzen der folgenden Klassen angehängt werden: - java.sql.connection - java.sql.statement - java.sql.resultset Alle diese Klassen verfügen über die Methode getwarnings(), um Warnungen abzufragen. Das folgende Beispiel zeigt die Behandlung von Warnungen: // Beispiel 5 // JDBC-Warnungen public void printwarnings(sqlwarning w) { while (w!=null) { System.err.println("Datenbank-Warnung:"); System.err.println(w.getMessage()); System.err.println("SQL-Fehlerzustand:"+w.getSQLState()); System.err.println("Hersteller-Code:"+w.getErrorCode()); w=w.getnextwarning(); Diese Methode kann nun benutzt werden, um Warnungen auszugeben. Die Ausnahme DataTruncation Die letzte Ausnahmeklasse behandelt den Sonderfall, dass Daten abgeschnitten werden. Geschieht dies beim Lesen eines Datensatzes, wird DataTruncation als Warnung behandelt. Kommt dies beim Schreiben von Datensätzen vor, wird hingegen eine Ausnahme erzeugt und geworfen. DataTruncation verfügt über weitere Methoden, um die genaue Position des Fehlers zu bestimmen. Treiber und Treiberverwaltung Treibertypen JDBC-Treiber werden in vier Klassen eingeteilt: - JDBC-ODBC Brücke - Hybrid-Treiber (Java-C/C++) - Middleware-Treiber - Java-Treiber 7

8 Typ 1: JDBC-ODBC-Brücke Hierbei handelt es sich um eine Implementation von Sun. JDBC-ODBC Treiber kommen vor allem im Windows-Umfeld zum Einsatz. Perfomantere Treiber dieses Typs sind kommerziell erhältlich. Außerhalb des Windowsumfelds sind JDBC-ODBC-Treiber praktisch bedeutungslos. Es handelt sich um die langsamste Methode, Datenbanken unter Java anzusprechen. Java-Programm Datenbank JDBC ODBC-Treiber JDBC-Treiber ODBC Typ 2: Hybrid-Treiber Treiber diesen Typs werden unter Benutzung von JNI (Java Native Interface) implementiert. Diese Treiber setzen die JDBC-Aufrufe in die native API des Datenbankherstellers um. Diese Treiber sind vor allem im Unix-Umfeld verbreitet. Java-Programm Datenbank JDBC JDBC-Treiber Nativer Treiber 8

9 Typ 3: Middleware-Treiber Diese Treiber sprechen eine Middleware an, die den Zugriff auf die Datenbanken vermittelt. Treiber diesen Typs sind meist komplett in Java implementiert. Dies bietet Vorteile, da die Treiberdateien bspw. von Applets geladen werden können. Ein weiterer Vorteil von Treibern diesen Typs ist, dass eine kommerzielle Middleware zumeist mehrere Datenbanken in heterogenen Umgebungen ansprechen kann. Java-Programm Datenbank Datenbank Datenbank JDBC JDBC-Treiber Middleware Typ 4: Java Treiber Treiber diesen Typs sind komplett in Java implementiert. Diese Treiber stehen zur Verfügung, wenn die entsprechende Datenbank selbst in Java implementiert ist oder Java-Aufrufe selbstständig verarbeiten kann. Diese Treiber haben den Vorteil, dass sie zumeist die Möglichkeiten von JDBC komplett ausnutzen. Des weiteren bieten in Java implementierte Datenbanken z.t. auch die Möglichkeit, Java Objekte abzuspeichern. Java-Programm Datenbank JDBC JDBC-Treiber 9

10 Treiberregistrierung Die ausgewählten Datenbanktreiber müssen vor der ersten Benutzung initialisiert werden. Hierfür gibt es drei Möglichkeiten. - Die Klassen des Treibers können direkt initialisiert werden. - Es werden Interfaces benutzt und nur die Treiberklasse direkt initialisiert. - Es wird der Registrierungsmechanismus der Klasse DriverManager verwendet. Direkte Initialisierung Die Treiberklassen können direkt initialisiert werden, wie im folgenden Beispiel geziegt wird: package example; import java.sql.*; import org.enhydra.instantdb.jdbc.*; public class Example6 { public static void main(string args[]) throws Exception { idbdriver dr=new idbdriver(); // Erstellen der Datenbankverbindung idbconnection c = (idbconnection) dr.connect( "jdbc:idb:databaseurl",null); idbstatement s= (idbstatement) c.createstatement(); idbresultset r= (idbresultset) s.executequery("select * FROM Table"); while (r.next()) { System.out.println(r.getString("Spalte1")+" "+ r.getstring("spalte2")); c.close(); Durch eine solche Vorgehensweise wird die Datenbankunabhängigkeit von JDBC untergraben. Da diese weitestgehend durch die Benutzung der Interfaces ermöglicht wird, müssen zusätzlich bei jedem Befehl Typkonvertierungen vorgenommen werden. Dennoch hat die Vorgehensweise in bestimmten Fälle seine Berechtigung: Beispielsweise können JDBC-Treiber herstellerabhängige Erweiterungen enthalten. Als Beispiele seien hier Oracle- und instantdb-treiber genannt. 10

11 Nutzung der Interfaces Ein besserer Ansatz ist jedoch zumeist, direkt mit den entsprechenden Interfaces zu arbeiten. Das vorherige Beispiel sieht dann folgendermaßen aus: package example; import java.sql.*; public class Example7 { public static void main(string args[]) throws Exception { Driver dr=new org.enhydra.instantdb.jdbc.idbdriver(); Connection c = dr.connect( "jdbc:idb:databaseurl",null); Statement s= c.createstatement(); ResultSet r= s.executequery("select * FROM Table"); while (r.next()) { System.out.println(r.getString("Spalte1")+" "+ r.getstring("spalte2")); c.close(); Dadurch entfällt zunächst die Notwendigkeit zur Typumwandlung. Wichtiger ist jedoch, dass der Quellcode nun weitestgehend unabhängig vom verwendeten Treiber ist. Allerdings muss jedoch noch immer die Treiberklasse im Quellcode angegeben werden. Die Benutzung der automatischen Registrierung der Klasse DriverManager setzt an diesem Problem an. Benutzung von DriverManager Statt die Treiberklasse mit new zu initialisieren, verfolgt JDBC einen anderen Ansatz: mit dem Befehl Class.forName( org.enhydra.instantdb.jdbc.idbdriver ); wird die Klasse dynamisch geladen. Der obige Befehl initialisiert jedoch eigentlich nicht die Klasse, sondern weist lediglich den Klassenlader an, die Klasse in den Speicher zu laden. Damit der Treiber nun initialisiert und beim Treibermanager registriert wird, muss der Treiber aussehen wie folgt: package example; import java.sql.*; public class TreiberBeispiel implements Driver { static { try { new TreiberBeispiel(); catch(sqlexception e) { //... public TreiberBeispiel(){ DriverManager.registerDriver(this); //... //... 11

12 Bei Benutzung der Registrierung sieht der vollständige Code nun aus wie in Beispiel 1: package example; import java.sql.*; public class Example1 { public static void main(string args[]) throws Exception { Class.forName("org.enhydra.instantdb.jdbc.idbDriver"); Connection c = DriverManager.getConnection ( "jdbc:idb:databaseurl"); Statement s=c.createstatement(); ResultSet r=s.executequery("select * FROM Table"); while (r.next()) { System.out.println(r.getString("Spalte1")+" "+ r.getstring("spalte2")); c.close(); Es fällt auf, dass die datenbankspezifischen Teile nunmehr lediglich zwei Strings sind, die übergeben werden. Diese Zeichenketten können problemlos als Properties eingelesen werden. Dadurch kann ohne Neukompilierung die Datenbank gewechselt werden. Verbindungsaufbau JDBC-URL Um eine Verbindung zu einer Datenbank aufzubauen, gibt es zwei Möglichkeiten: Über die jeweilige Treiberklasse oder den DriverManager. In jedem Fall wird aber die JDBC-URL der Datenbank benötigt. Diese besteht aus drei Teilen: Protokoll, Subprotokolle und Adresse der Datenquelle Die Zusammensetzung ist: protokoll:subprotokoll:adresse Die folgenden Beispiele zeigen die verschiedenen möglichen Zusammensetzung der JDBC-URL: jdbc:odbc:beispieldb;autocommit=true jdbc:idb:c:/dbhome/beispieldb.prp jdbc:oracle:thin:@localhost:9000:beispieldb Hierbei sind die verschiedenen Subprotokolle fett dargestellt und die Adressen unterstrichen. Festgelegt ist lediglich das Hauptprotokoll, dass immer jdbc lauten muss. Die Subprotokolle und Adressen der Datenquellen sind abhängig vom gewählten Treiber. Die Angabe der Subprotokolle dient dem Datenbanktreiber zur Identifikation einer JDBC-URL. Dieser erkennt am gewählten Subprotokoll, ob er die gewünschte Datenbankverbindung herstellen kann. Die Adresse der Datenquelle gibt an, welche Datenbank benutzt werden soll. 12

13 Verbindungserstellung Verbindungen können auf zwei Wegen erstellt werden: - Direkt über die Treiberklasse - Über den Treibermanager Die letztere Methode ist hierbei vorzuziehen, bei manchen Datenbanksystemen ist jedoch die erste Methode notwendig. Wird eine Verbindung direkt über die Treiberklasse erstellt, wird dessen Methode connect() aufgerufen. Der Methode müssen die JDBC-URL und eine Objekt der Klasse java.util.properties übergeben werden. Die Eigenschaften, die in diesem Objekt festgelegt sein müssen, sind treiberabhängig. Zumeist müssen zumindest die Eigenschaften user und password gesetzt werden. Dies verdeutlicht das folgende Beispiel: Driver odbcbridge=new sun.jdbc.odbc.jdbcodbcdriver(); String url="jdbc:odbc:beispiel"; Properties p=new Properties(); p.put("user","guest"); p.put("password","default"); Connection odbcconn=odbcbridge.connect(url,p); Diese Methode wird vor allem dann benutzt, wenn Eigenschaften an die Datenbank übergeben werden müssen, die nicht innerhalb der JDBC-URL gesetzt werden können. Vorzuziehen ist jedoch die Erstellung von Verbindungen über die Klasse DriverManager. Hierzu wird dessen statische Methode getconnection() aufgerufen. Der Methode muss die JDBC- URL übergeben werden. Optional können Username und Passwort übergeben werden. String url="jdbc:odbc:beispiel"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection odbcconn=drivermanager.getconnection (url,"guest","default"); Die Benutzung von DriverManager hat einen weiteren Vorteil: Es können mehrere Treiber zur selben Zeit registriert sein. In dem Fall wird connect() aller Treibern in der Reihenfolge ihrer Registrierung aufgerufen. Der Treiber erkennt am übergebenen Subprotokoll, ob er diese Verbindung aufbauen kann und gibt null zurück, wenn dem nicht der Fall ist. So können von einer Anwendung Verbindungen zu mehreren Datenbanken aufgebaut werden. Datenbankanweisungen Wurde eine Datenbankverbindung erstellt, kann sie benutzt werden, um Anweisungen (Statement) zu erstellen. Es gibt drei mögliche Arten von Anweisungen: - einfache Anweisungen (Statement) - vorkompilierte Anweisungen (PreparedStatement) - Prozeduraufrufe (CallableStatement) Die Benutzung der ersten beiden Arten werden in diesem Dokument näher erläutert. CallableStatement wird nur kurz angerissen. 13

14 Einfache Anweisungen Anhand von einfachen Anweisungen lassen sich gut die Grundzüge der JDBC-Anwendungsentwicklung zeigen. Einfache Anweisungen werden vor allem dann verwendet, wenn bis zur tatsächlichen Ausführung keine Aussage über die Datenbankanfrage getroffen werden kann. Ein Statement-Objekt wird erstellt, in dem die Methode createstatement() von Connection aufgerufen wird. // Erstellung der Datenbankverbindung Statement st=conn.createstatement(); Das erstellte Objekt kann nun benutzt werden, um eine Anfrage auszuführen. Das Interface Statement vereinbart hierzu drei Methoden: - boolean execute(string sql); - ResultSet executequery(string sql); - int executeupdate(string sql); Ist vor Ausführung der Anweisung bekannt, dass es sich um eine Anfrage handelt, die eine Ergebnistabelle liefert (z.bsp. eine SELECT-Anweisung), kann die Methode executequery() benutzt werden. Gleiches gilt für Anweisungen, die wie UPDATE oder INSERT lediglich die Anzahl der veränderten Zeilen der Tabelle zurückliefern. In diesem Fall wird executeupdate() benutzt. Wie oben bereits erwähnt, wird Statement jedoch zumeist benutzt, um Anfragen auszuführen, über deren Natur keine Aussagen zur Kompilationszeit getroffen werden können. Hierfür ist die Methode execute() geeignet. Sie liefert einen booleschen Wert zurück. Ist dieser wahr (true), handelt es sich beim Ergebnis der Anfrage um ein ResultSet, ansonsten wird ein Integerwert bereitgestellt, der der Anzahl der veränderten Tabellenzeilen entspricht. Ein weiterer Vorteil von execute() ist, dass die Anweisung in der Lage ist, mehrere ResultSets zu liefern. Dabei handelt es sich um ein eher ungewöhnliches Verhalten, dass jedoch bei der Verarbeitung dynamischer SQL-Anweisungen in Betracht gezogen werden muß. 14

15 Das folgende Beispiel benutzt alle Möglichkeiten von execute(): package examples; import java.sql.*; /** * Beispiel 10. * Eine einfache SQL-Shell. */ public class Shell { public static void main(string[] args) { if (args.length==0) { System.out.println("Aufruf:"); System.out.println("java examples.shell SQL-Anweisung"); System.exit(-1); String sql=new String(); for (int i=0;i<args.length;i++) { sql += args[i]+" "; try { Class.forName("org.enhydra.instantdb.jdbc.idbDriver"); Connection conn=drivermanager.getconnection( "jdbc:idb:c:/projekt/jdbcref/rsc/example.prp"); Statement st=conn.createstatement(); if (st.execute(sql)) { do { ResultSet rs=st.getresultset(); int numcols=rs.getmetadata().getcolumncount(); while (rs.next()) { for (int i=1;i<=numcols;i++) { if (i!=numcols) System.out.print(rs.getString(i)+", "); else System.out.println(rs.getString(i)); rs.close(); while (st.getmoreresults()); int updatecount; while ((updatecount=st.getupdatecount())!=-1) { System.out.println("Veraenderte Zeilen: "+updatecount); st.getmoreresults(); st.close(); conn.close(); catch(classnotfoundexception cnfe) { System.err.println("Treiber nicht gefunden!"); cnfe.printstacktrace(); catch(sqlexception sqle) { System.out.println("Datenbankfehler: "); System.out.println(sqle.getSQLState()+"("+sqle.getMessage()+")"); Zunächst wird eine Instanz von Statement erstellt. Die Ausführung erfolgt in der nächsten Zeile mit execute(), wobei das Ergebnis mittels if abgefragt wird. Ist dieser Wert wahr, erfolgt die Abarbeitung der übermittelten Ergebnistabellen. Dazu wird zunächst eine dieser Tabellen angefordert und verarbeitet. Die Anweisung getmoreresults() schaltet zum nächsten Ergebnis weiter und liefert einen boolschen Wert zurück, der genau dann wahr ist, wenn weitere Ergebnistabellen vorhanden sind. Das Ergebnis false bedeutet, dass entweder keine Ergebnisse mehr oder nur noch weitere Update-Zähler vorliegen. Da es Anweisungen gibt, die sowohl Ergebnistabellen als auch Update-Zähler zurück liefern, wurde kein else-teil eingefügt. Der Update-Zähler wird in jedem Fall ausgelesen. Erst wenn dieser gleich 1 ist, liegen keinerlei weitere Ergebnisse mehr vor. 15

16 Ergebnisauswertung Das obige Beispiel zeigt auch die grundsätzliche Vorgehensweise zur Auswertung von Ergebnistabellen. Um die Tabelle zu initialisieren, wird die Methode next() des ResultSets aufgerufen. Diese Methode schaltet bei späteren Aufrufen je eine Reihe weiter. Die Abfrage der einzelnen Ergebnisse, erfolgt dann mit Methoden vom Typ getxxx(int spaltennummer) bzw. getxxx(string spaltenname). XXX steht hierbei für eine zum SQL-Typ korrespondierende Javaklasse bzw. Datentyp. Da die meisten dieser Methoden skalare Datentypen zurückgeben, sollte die Methode wasnull() von Result Set aufgerufen werden, wenn ein Erkennen des SQL-Werts null notwendig ist. Ob eine Spalte den Wert null zuläßt, kann über das ResultSet-Metadatenobjekt abgefragt werden. Auf dieses wird weiter unten eingegangen. Bei der Abfrage der Spalten ist unbedingt zu beachten, dass diese in der Reihe des Aufrufs abgefragt werden. Es ist auch nicht möglich, im ResultSet zu navigieren, Kopien des ResultSet zu erstellen. Bei mehreren ResultSets als Ergebnis einer Anfrage ist auch darauf zu achten, dass beim Öffnen eines weiteren ResultSets des gleichen Statements das Schließen des ersten ResultSet automatisch geschieht. Vorkompilierte Anweisungen Anweisungen können auch vorkompiliert werden, um eine bessere Ausführungsgeschwindigkeit zu erreichen. Allerdings entsteht dadurch ein erhöhter Aufwand bei der Initialisierung. Daneben ist es möglich, Datenfelder nach der Kompilierung dynamisch zu besetzen und so paramtrisierbare Anweisungen zu schaffen. Durch diese Eigenschaften ist der Einsatz von PreparedStatements vor allem bei Webapplikationen sinnvoll. Hier werden vor allem statische Anweisungen mit variablen Daten benutzt. Beispiele sind sogenannte Einkaufskörbe und komplexe Abfragen. Die Benutzung von vorkompilierten Anweisungen entspricht der von einfachen Anweisungen. Unterschiede werden im folgenden dargestellt. Vorbereiten der Anweisung Ein PreparedStatement wird folgendermaßen erstellt: PreparedStatement ps=conn.preparestatement(sql); wobei der Parameter sql eine Anweisung (als String) ist. Dabei können Parameter verwendet werden. Diese werden in der übergebenen SQL-Anweisung als? (Fragezeichen) übergeben. Beispiele hierfür sind: SELECT * FROM Tabelle1 WHERE ID=? INSERT INTO Tabelle1 (ID,Name,Vorname) VALUES?,?,? nicht möglich hingegen ist es, Tabellen- oder Spaltennamen zu parametrisieren. Folgende Beispiele sind fehlerhaft: SELECT * FROM? SELECT * FROM Tabelle1 WHERE?<0 FALSCH FALSCH Setzen der Parameter Bevor die vorbereitete Anweisung ausgeführt werden kann, müssen die vereinbarten Parameter noch gesetzt werden. Hierfür stehen die Methoden void setxxx(int index, XXX value) zur Verfügung, wobei XXX für eine zum SQL-Typ kompatible Javaklasse steht. Zu beachten ist, dass im Gegensatz zur üblichen Zählweise in Java der Index mit eins beginnt. 16

17 Eine Übersicht die möglichen Javaklassen sind in der JDBC-Dokumentation zu finden. Jeder SQL- Datentyp kann jedoch durch eine Stringrepräsentation ersetzt werden. Ausführen der Anweisung Die Ausführung erfolgt wie bei einfachen Anweisungen. Jedoch wird den Methoden kein Parameter übergeben. Prozeduraufrufe Wenn die Datenbank Prozeduren und Funktionen unterstützt, kann mit der Klasse CallableStatement eine solche aufgerufen werden. Bei CallableStatements können Ein- und Ausgabeparameter verwendet werden. Transaktionen JDBC unterstützt zwei Arten der Transaktionssteuerung: Auto-Commit und eine programmatische Steuerung über Methoden-Aufrufe. Alle Transaktionen sind an das jeweilige Connection-Objekt gebunden. Für die meisten Anwendungen ist eine automatische Transaktionssteuerung ausreichend. Hierbei wird ein Commit nach jeder erfolgreichen Ausführung einer SQL-Anweisung ein Commit signalisiert. Die automatische Transaktionssteuerung wird mit folgenden Methoden aktiviert: - void setautocommit(boolean ac) - boolean getautocommit() Sollen komplexe Transaktionen vorgenommen werden, die sich über mehrere SQL-Aufrufe erstrecken (z.bsp. Auslesen, Verändern und Zurückschreiben eines Datensatzes), können Transaktionen mit folgenden Befehlen gesteuert werden: - void commit() - void rollback() Der Beginn einer Transaktion ist stets die erste Ausführung einer SQL-Anweisung im Programm bzw. nach einem commit(). Alle diese Methoden sind im Interface Connection vereinbart. Wenn Transaktionen innerhalb des Java-Programms weierexistieren (z.bsp. aufgrund einer Interaktion mit dem Benutzer), kann dies zu Konflikten führen, weil ein Benutzer versucht auf einen Datensatz zuzugreifen, der gerade durch einen anderen Benutzer bearbeitet wird. Ob eine Sperrung des Datensatzes notwendig ist oder nicht, ist stark von der jeweiligen Applikation abhängig. Daher gibt es in JDBC die Möglichkeit, verschiedene Isolationsstufen für Transaktionen zu setzen. Diese Stufen sind im Interface Connection als Zahlkonstanten vereinbart und können mit settransactionisolation(int talevel) gesetzt werden. Folgende Stufen stellt JDBC zur Verfügung: - TRANSACTION_NONE: Transaktionen werden nicht unterstützt. - TRANSACTION_READ_UNCOMMITED: Minimale Transaktionsunterstützung, bei der es erlaubt ist, nicht mit Commit gesicherte Daten zu lesen. Dies kann bei einem Rollback zu Dateninkonsistenzen führen. - TRANSACTION_READ_COMMITED: Das Lesen nicht gesicherter Daten wird von der Datenbank unterbunden. - TRANSACTION_REPEATABLE_READ: wie oben, zusätzlich wird jedoch wiederholtes Lesen unterbunden. Bsp: Zwei Transaktionen TA1 und TA2 bearbeiten den gleichen Datensatz im Zustand 0 (vor beiden TA). TA2 verändert den Datensatz und signalisiert Commit. Der Datensatz hat nun Zustand 1. TA1 liest den Datensatz erneut und erhält ihn im Zustand 0. Die Änderung des Datensatzes wird für TA1 erst nach einem Commit sichtbar. 17

18 - TRANSACTION_SERIALIZABLE: wie oben, zusätzlich wird das Verbot wiederholten Lesens auch auf neu hinzugefügte Tabellenzeilen ausgedehnt. Die Datenbank behandelt gleichzeitig stattfindende Transaktionen, als ob sie nacheinander stattgefunden hätten. Beim Verändern der Isolationsstufe ist zu beachten, dass die Unterstützung für die einzelnen Stufen abhängig von Datenbank als auch von dem verwendeten Treiber sind. Metadaten Die JDBC-API enthält zwei Klassen für Metadaten von Datenbankobjekten. Dabei handelt es sich um Metadaten über die Datenbank selbst (DatabaseMetaData) und über eine zurückgegebene Ergebnistabelle (ResultSetMetaData). Hier soll vor allem auf Letztere eingegangen werden. Die Klasse DatabaseMetadata erhält man durch Aufruf der entsprechenden get-methode des Interface Connection. Sie enthält sämtliche Daten zur unterliegenden Datenbank und deren Treiber. Kurz erwähnt sei, dass u.a. Methoden vorhanden sind, um die Unterstützung der oben erwähnten Transaktions-Isolationsstufen abzufragen. Die Klasse ResultSetMetaData hingegen ist von weit wichtigerer Bedeutung: Sie enthält vor allem Methoden, die benötigt werden, um Ergebnistabellen in korrekter Weise auslesen zu können. Man erhält das Objekt durch Aufruf der in ResultSet vereinbarten Methode getmetadata(). ResultSetMetaData verfügt über die folgenden gebräuchlichen Methoden: - int getcolumncount() liefert die Anzahl der Spalten des ResultSet zurück. - String getcolumnname(int spalte) liefert den internen Namen der Spalte. - String getcolumnlabel(int spalte) liefert den vorgeschlagenen Ausgabenamen der Spalte. - String getcolumntypename(int spalte) liefert den Namen des SQL-Typs zurück. - int getcolumntype(int spalte) wird benutzt, um den Typ der Spalte zu bestimmen. Sämtliche Datentypen sind in der Klasse java.sql.types aufgeführt. - boolean iscurrency() und boolean isnullable() werden benötigt, um Spalten richtig interpretieren zu können. Datentypen Um Daten richtig weiterverarbeiten zu können, ist es meist notwendig, ein Typmapping vorzunehmen, da Datenbanken andere Datentypen verwenden als Java (und die meisten anderen Programmiersprachen). Für die Ausgabe ist eine Stringrepräsentation der meist ausreichend. Diese Umwandlung wird von allen SQL-Datentypen unterstützt. Die ganzahligen Typen TINYINT, SMALLINT, INTEGER und BIGINT werden durch die Java- Datentypen byte, short, int und long am besten umgesetzt. Für Fließkommazahlen besteht folgende Umsetzung: REAL wird zu float, FLOAT und DOUBLE zu double. Die Fixpunkttypen NUMERIC, DECIMAL und CURRENCY werden als java.math.bigdecimal dargestellt. BIT entspricht boolean, die verschiedenen BINARY-Typen byte[]. Lediglich für drei SQL-Datentypen konnte keine korrespondierende Javaklasse gefunden werden. Es handelt sich um die Typen DATE, TIME und TIMESTAMP. Die Klasse java.util.date entspricht keinem der drei Typen; daher wurden von ihr drei weitere Klassen abgeleitet. Es handelt 18

19 sich um java.sql.date, java.sql.time und java.sql.timestamp. Alle drei Klassen implementieren durch die Oberklasse java.util.date die Interfaces Serializable, Cloneable und Comparable. Den verschiedenen SQL-Datentypen sind in der Klasse java.sql.types Integerkonstanten zugeordnet. So kann ein Mapping mit Hilfe des switch-befehls dargestellt werden. Anhang Die für dieses Dokument benutzten Quellen sind: - Wolfgang Dehnhardt: Anwendungsprogrammierung mit JDBC, Hanser Verlag David Flanagan u.a.: Java Enterprise in a Nutshell, O Reilly Java-API Dokumentation von SUN ( 19

JDBC. Java DataBase Connectivity

JDBC. Java DataBase Connectivity JDBC Java DataBase Connectivity JDBC-Schichten JDBC besteht aus 2 Teilen, 1. aus Datenbanktreibern, die den Anschluß von Java-Anwendungen an Datenbanksysteme wie Sybase, DB/2, Oracle, MS ACCESS oder Mini

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

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

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

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen Datenbankentwurf & Datenbankzugriff mit JDBC Georg Köster Sven Wagner-Boysen 6. November 2007 Gliederung 2 Datenbankentwurf für ProminentPeople.info ER-Modell Relationaler Entwurf Normalisierung Datenbankzugriff

Mehr

Datenbanken SQL JDBC. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 21

Datenbanken SQL JDBC. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 21 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 21 Datenbanken SQL JDBC 2 / 21 Relationale Datenbanken Ein Datenbanksystem ist ein System zur Speicherung von (großen) Datenmengen:

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2017/2018 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 14. September 2017 Betriebssysteme / verteilte

Mehr

Oracle & Java HOW TO

Oracle & Java HOW TO Oracle & Java HOW TO Helge Janicke, Niels-Peter de Witt, Karsten Wolke 21. Januar 2002 Inhaltsverzeichnis 1 Java-Anbindung an Oracle-DB 2 2 Benötigte Programme und Daten 2 3 Einbinden der Klassen 2 4 Aufbau

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

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 20. November 2015 Betriebssysteme / verteilte

Mehr

Ho Ngoc Duc IFIS - Universität zu Lübeck

Ho Ngoc Duc IFIS - Universität zu Lübeck Ho Ngoc Duc IFIS - Universität zu Lübeck 16.04.2003 1 Standard für relationale DB: SQL Vor JDBC: Open Database Connectivity (ODBC), uniforme Schnittstelle für Zugriff JDBC: Programmierschnittstelle (Java-API)

Mehr

Willkommen. Datenbanken und Anbindung

Willkommen. Datenbanken und Anbindung Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein

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 Datenbanksysteme Programmieren von Datenbankzugriffen mit JDBC Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2018 Übersicht Architektur von JDBC Ziele von JDBC Grundstruktur

Mehr

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007 Einführung in JDBC IFIS Universität zu Lübeck 18.04.2007 1 Was ist JDBC Standard für relationale DB: SQL Vor JDBC: Open Database Connectivity (ODBC), uniforme Schnittstelle für Zugriff JDBC: Programmierschnittstelle

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

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

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

Java: MySQL-Anbindung mit JDBC.

Java: MySQL-Anbindung mit JDBC. Java: MySQL-Anbindung mit JDBC Vorarbeiten Wir brauchen: - MySQL-Server - JDBC-Treiber - (Import java.sql.*) Vorarbeiten MySQL-Server in unserem Falle: WAMP (= Apache) (runterladen, installieren, starten)

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

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

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

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7 Aufgabe 2 + 3: Datenbanksysteme I import java.sql.*; import oracle.jdbc.driver.*;

Mehr

Java Database Connectivity. Gracin Denis, IB 4 C

Java Database Connectivity. Gracin Denis, IB 4 C Java Database Connectivity Gracin Denis, IB 4 C Agenda 1. JDBC-Architektur 2. Treiber der JDBC 2.1 Typ-1 Treiber 2.2 Typ-2 Treiber 2.3 Typ-3 Treiber 2.4 Typ-4 Treiber 3. Verbindungsablauf 4. Connection

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

Datenbank und Informationssysteme

Datenbank und Informationssysteme Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC......................

Mehr

Java Database Connectivity API / JDBC

Java Database Connectivity API / JDBC Java Database Connectivity API / JDBC Motivation Design Treiber Grundlagen Metadaten Transaktionen Exceptions Praktikum aus Softwareentwicklung 2 Markus Löberbauer 1 Motivation Problem: Zugriff auf DBMS

Mehr

Datenbanken SQL-Grundlagen JDBC SQL-Constraints. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Datenbanken SQL-Grundlagen JDBC SQL-Constraints. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 Datenbanken 2 SQL-Grundlagen 3 JDBC 4 SQL-Constraints Relationale Datenbanken Ein Datenbanksystem ist ein System zur Speicherung

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

Datenbankschnittstellen erlauben Zugriff auf Datenbank aus einer externen Anwendung

Datenbankschnittstellen erlauben Zugriff auf Datenbank aus einer externen Anwendung Rückblick Datenbankschnittstellen erlauben Zugriff auf Datenbank aus einer externen Anwendung Portabilität als wichtige Anforderung, d.h. RDBMS oder Programmiersprache soll leicht austauschbar sein Call-Level

Mehr

Datenbanksysteme 2011

Datenbanksysteme 2011 Datenbanksysteme 2011 noch Kapitel 10: Datenbankapplikationen Oliver Vornberger Institut für Informatik Universität Osnabrück Datenbankapplikationen MS Visio MS Access Embedded SQL im C-Programm JDBC /

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

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

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Sommersemester 2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 10. Java: Datenhaltung mit Datenbanken 1 Datenbank-Programme Derby (Hersteller: Apache

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 9 Embedded SQL Vorlesung Datenbanken 1 Embedded SQL (siehe auch [Date00]) Arbeitsweise ähnlich PL/SQL, allerdings: Normale Programmiersprache mit eingestreuten SQL-Befehlen und anderen Befehlen

Mehr

11 Anwendungsprogrammierung

11 Anwendungsprogrammierung 11 11 11.1 Programmiersprachenanbindung 11.2 11.3 183 11 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele:

Mehr

Der Einsatz von SELECT from INSERT auf dem System i

Der Einsatz von SELECT from INSERT auf dem System i Zwei Operationen werden zu einer neuen Funktion von Jinmei Shen und Karl Hanson INSERT und SELECT waren vor V6R1 in DB2 für i5/os zwei getrennte Operationen. Um eingefügte Spaltenwerte abzufragen, konnte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Klausur Datenbanken II

Klausur Datenbanken II Klausur Datenbanken II 8.3.2001 Name Vorname Semester Matrikelnr Aufgabe Punkte maximal 1 8 2 8 3 3 4 3 5 4 6 6 7 6 8 6 9 [Zusatz] [4] Summe 44 Punkte erreicht Bitte geben Sie die Lösungen möglichst direkt

Mehr

Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6

Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6 Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez. 2011 Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6 Datenbanksysteme I Aufgabe 1: Deklarative Änderungsoperationen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

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

RELATIONONALE DATENBANKEN MIT JDBC

RELATIONONALE DATENBANKEN MIT JDBC RELATIONONALE DATENBANKEN MIT JDBC Christoph Süsens 07.05.2012 Inhalt Abbildungsverzeichnis...3 Java Database Connection JDBC...4 Herstellen einer Verbindung JDBC - DBMS...4 Treiber Installation Beispiel:

Mehr

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik Udo Matthias Munz Datenbanken und SQL mit Einführung Informationstechnik Zugriff auf eine Datenbank... 2 ODBC... 2 Eine DSN einrichten... 3 Verbindung zu einer Datenbank... 4 Datenbank... 4 Metadaten der

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011.

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 26 Datenbanken SQL-Grundlagen JDBC SQL-Constraints 2 / 26 Relationale Datenbanken Ein Datenbanksystem ist ein System zur

Mehr

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape 6. Übung Aufgabe 1: In dieser Übung sollen Sie eine kleine Java-Anwendung schreiben, die auf die Oracle-Datenbank

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

Kurzübersicht JDBC. Marc Monecke. monecke@informatik.uni-siegen.de. 15. Januar 2003

Kurzübersicht JDBC. Marc Monecke. monecke@informatik.uni-siegen.de. 15. Januar 2003 Kurzübersicht JDBC Marc Monecke monecke@informatik.uni-siegen.de 15. Januar 2003 Zusammenfassung Über JDBC-Schnittstellen können Anwendungsprogramme auf Datenbanken zugreifen, ohne daß dabei hersteller-

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

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Anwendungsprogrammierung mit JDBC

Anwendungsprogrammierung mit JDBC Anwendungsprogrammierung mit JDBC Datenbanken - Java - Client/Server von Wolfgang Dehnhardt 1. Auflage Anwendungsprogrammierung mit JDBC Dehnhardt schnell und portofrei erhältlich bei beck-shop.de DIE

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können!

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! Datenbanken: Standard CLI und JDBC Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! (Endanwendern ist nicht zuzumuten, SQL zu lernen

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren DB-Programmierung Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele static SQL verstehen Build-Prozess / Art des Datenzugriffs Host-Variablen Vor- / Nachteile dynamic SQL verstehen

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Android Programmierung. Studiengang MI

Android Programmierung. Studiengang MI Android Programmierung mit Java Studiengang MI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://mwilhelm.hs-harz.de Raum 2.202 Tel.

Mehr

Kapitel 11: Anwendungsentwicklung

Kapitel 11: Anwendungsentwicklung Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme Skript zur Vorlesung Wintersemester 2015/2016 Kapitel 11: Anwendungsentwicklung Vorlesung:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

GML und Bibliothek oracle.sdoapi

GML und Bibliothek oracle.sdoapi GML und Bibliothek oracle.sdoapi Nachfolgend werden die Java-Klassen aus dem GML-Kapitel unter Verwendung der alten Klassenbibliothek oracle.sdoapi dargestellt. Erzeugung von GML 3.1 aus SDO_GEOMETRY-Objekten

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Kapitel 11: Anwendungsentwicklung

Kapitel 11: Anwendungsentwicklung Skript zur Vorlesung Wintersemester 2005/2006 Kapitel 11: Anwendungsentwicklung Vorlesung: Dr. Matthias Schubert Übungen: Elke Achtert, Arthur Zimek Skript 2004 Christian Böhm http://www.dbs.informatik.uni-muenchen.de/lehre/dbs

Mehr

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften JAVA Weiterführende Spracheigenschaften 100 AGENDA Strings Exceptions Enums Generics Lambdas & Methods Bulk-Operations 101 DIE KLASSE STRING Zeichenketten werden in Java als String repräsentiert Wie der

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einführung: Verteilte Systeme - Remote Method Invocation - Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

JDBC Datenzugriff aus Java ETIS SS04

JDBC Datenzugriff aus Java ETIS SS04 JDBC Datenzugriff aus Java ETIS SS04 Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung JDBC 2 Motivation(I) Standard für Zugriff auf Datenquellen aus Java- Anwendungen RDBs,

Mehr

Praktikum aus Softwareentwicklung 2, Stunde 7

Praktikum aus Softwareentwicklung 2, Stunde 7 Praktikum aus Softwareentwicklung 2, Stunde 7 Lehrziele/Inhalt 1. Datenbanken Datenbanken Datenbanken werden in Java über JDBC (ist ein Eigenname, wird aber oft als Abkürzung von Java Database Connectivity

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Java Spickzettel von Panjutorials.de

Java Spickzettel von Panjutorials.de Java Spickzettel von Panjutorials.de Hallo Welt public class HalloWelt public static void main(string[] args) // Gibt "Hallo Welt" auf die Konsole aus System.out.print("Hallo Welt"); Eine eigenständige

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

Ausgewählte Implementierungsprobleme

Ausgewählte Implementierungsprobleme Ausgewählte Implementierungsprobleme Rebecca Tiarks 22. Januar 2009 1 / 50 Inhaltsverzeichnis 1 2 / 50 Datenbanken Sammeln, Zugreifen und Verwalten von Daten in der Computerwelt geschieht das mit Datenbanken

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public

Mehr

Datenbanken 1 für Mediennformatiker WS 06. 4. ODBC, JDBC und SQLJ: Datenbank-Anbindung an Anwendungsprogramme

Datenbanken 1 für Mediennformatiker WS 06. 4. ODBC, JDBC und SQLJ: Datenbank-Anbindung an Anwendungsprogramme Datenbanken 1 für Mediennformatiker WS 06 4. ODBC, JDBC und SQLJ: Datenbank-Anbindung an Anwendungsprogramme Der letzte Schritt Diese grafische Oberfläche mit der Ebay-Datenbank verbinden... Anwendungen

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

Mehr

vs. Fehler zur Übersetzungszeit

vs. Fehler zur Übersetzungszeit Client-Server-Architektur, Anbindung von Programmiersprachen, Call-Level-Schnittstellen: /, JDBC, :, J, gespeicherte Prozeduren, prozedurale Erweiterungen: /PSM, PL/. IPD, Forschungsbereich Systeme der

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

Mehr