Middleware Spezialist OpenLink bietet universellen Treiber für die meisten DBMS (inkl. PostgreSQL) und ODBC Datenquellen.

Größe: px
Ab Seite anzeigen:

Download "Middleware Spezialist OpenLink bietet universellen Treiber für die meisten DBMS (inkl. PostgreSQL) und ODBC Datenquellen."

Transkript

1 JDBC Treiber Middleware Spezialist OpenLink bietet universellen Treiber für die meisten DBMS (inkl. PostgreSQL) und ODBC Datenquellen. JDBC Treiber kontaktiert Request Broker. Request Broker vermittelt Zugriff zur Datenbank Sun Microsystems bietet mit JDBC eine JDBC ODBC Brücke für Zugriff auf ODBC Datenquellen. Treiber Klasse: sun.jdbc.odbc.jdbcodbcdriver Weitere JDBC Treiber: Web Anwendung zur Treiberauswahl 401

2 Datenbankverbindung aufbauen Connection con = DriverManager.getConnection ("jdbc:postgresql://mark:5712/eshop", "user", "password"); JDBC URL identifiziert Datenbank. Aufbau: jdbc:subprotocol:subname Treibermanager übergibt JDBC URL der Reihe nach an registrierte Treiber. Driver.acceptsURL(String url) Liefert true, falls der Treiber das Subprotocol erkennt. Beispiel: JDBC ODBC Bridge erkennt jdbc:odbc:mydb;uid=me;pwd=secret 402

3 Connection Ergebnis von DriverManager.getConnection() ist eine Connection (oder eine SQLException). Verbindung zur Datenbank Connection ist teure Ressource: Aufbau der Verbindung kostet viel Zeit. Anzahl gleichzeitiger Verbindungen häufig beschränkt. Voreinstellung bei PostgreSQL: max. 32 Verbindungen Wichtigste Aufgaben: Erzeugen von Statement Objekten Beschreibungen von Datenbank und DBMS erfragen Transaktionen handhaben 403

4 Statement Statement stmt = con.createstatement(); Wird immer aus bestehender Connection erzeugt Ausführen einer SQL Anweisung über die Connection. Mehrere parallele Statements pro Connection möglich SELECT Anweisung ausführen: ResultSet rs = stmt.executequery("select * FROM kunden"); Daten ändern: int updates = stmt.executeupdate("delete FROM kunden..."); 404

5 ResultSet: Zeilendurchlauf ResultSet rs = stmt.executequery("select * FROM kunden"); Ergebnis einer Selektionsanweisung: Tabelle Wird aus Statement erzeugt. ResultSet enthält einen Datensatz Zeiger (Cursor) zum Durchlauf der Tabelle. Voreinstellung: sequentiell und lesend JDBC 2: nichtsequentielle und aktualisierbare ResultSets Zeiger steht initial vor der ersten Tabellenzeile. ResultSet.next() positioniert zur nächsten Zeile. Liefert false, falls bereits auf letzter Zeile 405

6 ResultSet: Attribute lesen Spaltenwerte (Attribute) einer Zeile mit getxxx() Methoden lesen Treiber konvertiert Daten, falls möglich Beispiel: Lesen einer ganzen Zahl in Spalte»anzahl«: int n = rs.getint("anzahl"); Effizientere Methode, falls Spaltenindex bekannt: int n = rs.getint(4); Spaltenindex zum Spaltennamen finden int findcolumn(string columnname) Strategie: Spaltenindex einmalig ermitteln und merken, Werte danach immer über den Index abrufen. 406

7 ResultSet: Attribute lesen Zahlreiche weitere Methoden getarray, getasciistream, getbigdecimal, getbinarystream, getblob, getboolean, getbyte, getbytes, getcharacterstream, getclob, getdate, getdouble, getfloat, getint, getlong, getobject, getref, getshort, getstring, gettime, gettimestamp 407

8 ResultSet: Attribute lesen Methode getobject Liest jeden beliebigen SQL Datentyp Liefert Ergebnis als entsprechenden Java Typ Nullwerte Spalte kann leere Zellen enthalten (Nullwert, SQL NULL). Bei leerer Zelle liefert getint() ebenfalls das Ergebnis 0. Temperaturen Datum Temperatur Unterscheidung zu echter 0 möglich durch wasnull() true, falls zuletzt mit getxxx() gelesene Zelle SQL NULL enthielt false sonst 408

9 ResultSet: Ressourcen freigeben Nach Bearbeitung ResultSet schließen void close() Gibt Ressourcen frei Ausführen einer weiteren Anweisung mit demselben Statement schließt das ResultSet implizit. 409

10 ResultSet: positionieren und ändern Statement createstatement(int resultsettype, int resultsetconcurrency) Parameter (ResultSet Konstanten) ermöglichen beliebiges Positionieren (»Scrolling«) und Ändern der Datensätze. TYPE_FORWARD_ONLY: sequentieller Durchlauf TYPE_SCROLL_INSENSITIVE: positionierbar, Änderungen an Datenbank werden nicht bemerkt. TYPE_SCROLL_SENSITIVE: positionierbar, Änderungen an Datenbank werden bemerkt. CONCUR_READ_ONLY: nur lesen CONCUR_UPDATABLE: Änderungen möglich 410

11 ResultSet: positionieren void beforefirst() Positioniert vor den ersten Satz. boolean first() Positioniert auf den ersten Satz. boolean last() Positioniert auf den letzten Satz void afterlast() Positioniert hinter den letzten Satz. 411

12 ResultSet: positionieren boolean absolute(int pos) Positioniert relativ zum Anfang (pos positiv) oder relativ zum Ende (pos negativ). boolean relative(int rows) Positioniert relativ zum aktuellen Satz vorwärts (rows positiv) oder rückwärts (rows negativ). boolean next() Positioniert auf den nächsten Satz. boolean previous() Positioniert auf den vorigen Satz. 412

13 ResultSet: positionieren int getrow() Liefert aktuelle Satznummer. boolean isbeforefirst() Liefert true, falls vor dem ersten Satz. boolean isfirst() Liefert true, falls auf dem ersten Satz. boolean islast() Liefert true, falls auf dem letzten Satz. boolean isafterlast() Liefert true, falls hinter dem letzten Satz. 413

14 ResultSet: Datensatz ändern Methoden updatexxx() ändern Werte in aktueller Zeile. rs.absolute(5); rs.updatestring("name", "Klute"); rs.updateint(2, 42); rs.updatenull(3); rs.updaterow(); void updaterow() Schreibt geänderte Zeile in die Datenbank. void cancelrowupdates() Macht Änderungen rückgängig vor updaterow(). void deleterow() Löscht aktuelle Zeile aus ResultSet und Datenbank 414

15 ResultSet: Datensatz einfügen Einfügezeile: im ResultSet, nicht in der Datenbank rs.movetoinsertrow(); rs.updatestring("name", "Klute"); rs.updateint(2, 42); rs.insertrow(); rs.movetocurrentrow(); void movetoinsertrow() Positioniert auf die Einfügezeile void insertrow() Schreibt Einfügezeile in ResultSet und Datenbank void movetocurrentrow() Positioniert von der Einfügezeile auf die aktuelle Zeile im ResultSet 415

16 ResultSet: Änderungen erkennen Datenbank kann sich jederzeit ändern......durch andere Benutzer,...durch eigene parallele Anweisungen. Ziel: beim Lesen des ResultSets Änderungen erkennen Voraussetzung: Statement mit ResultSet.TYPE_SCROLL_SENSITIVE erzeugen. Mehraufwand kostet Performance. Implementationsabhängig 416

17 ResultSet: Änderungen erkennen void refreshrow() Liest aktuelle Zeile neu aus der Datenbank. boolean rowdeleted() Liefert true, falls aktuelle Zeile in der Datenbank gelöscht wurde. boolean rowinserted() Liefert true, falls aktuelle Zeile»Einfügung hatte«. boolean rowupdated() Liefert true, falls aktuelle Zeile in Datenbank geändert wurde. 417

18 PostgreSQL und JDBC 2 Mit dem PostgreSQL beigegebenen JDBC Treiber ist nicht alles möglich, was JDBC 2 für ResultSets vorsieht. TYPE_FORWARD_ONLY: Ja TYPE_SCROLL_INSENSITIVE: Ja TYPE_SCROLL_SENSITIVE: Nein CONCUR_READ_ONLY: Ja CONCUR_UPDATABLE: Nein 418

19 Daten ändern mit UPDATE SQL Anweisung UPDATE ändert bestehende Datensätze. Viele Datensätze durch einen einzigen Befehl ändern Daten ändern auch ohne modifizierbare ResultSets Beispiele: UPDATE artikel SET preis = 100; UPDATE artikel SET preis = preis * 1.05 where id = 538; UPDATE artikel SET preis = preis * 1.05 where preis < 1000; 419

20 Daten löschen mit DELETE SQL Anweisung DELETE löscht bestehende Datensätze. Viele Datensätze durch einen einzigen Befehl löschen Daten löschen ohne modifizierbare ResultSets Beispiele: DELETE FROM artikel WHERE id = 538; DELETE FROM artikel WHERE preis < 100; DELETE FROM artikel WHERE NOT id IN (artikel FROM bestellungen); Löscht alle Artikel, die nie bestellt wurden 420

21 ResultSet: Treiberhinweise void setfetchdirection(int direction) Optimierungshinweis an den JDBC Treiber: In welcher Richtung liest die Anwendung das ResultSet? FETCH_FORWARD, FETCH_REVERSE oder FETCH_UNKNOWN int getfetchdirection() void setfetchsize(int rows) JDBC Treiber muß nicht alle Zeilen sofort aus der Datenbank holen. Optimierungshinweis an den JDBC Treiber: Wieviel Zeilen am Stück holen? int getfetchsize() 421

22 ResultSet: Diverses Statement getstatement() Statement, das dieses ResultSet erzeugt hat int gettype() TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE oder TYPE_SCROLL_SENSITIVE int getconcurrency() CONCUR_READ_ONLY oder CONCUR_UPDATABLE String getcursorname() Zum Ändern oder Löschen der aktuellen Zeile UPDATE table SET n = 42 WHERE CURRENT OF cursor DELETE FROM table WHERE CURRENT OF cursor 422

23 ResultSet: Metadaten Informationen über das ResultSet public ResultSetMetaData getmetadata() Anzahl der Spalten Spaltentyp, name und titel Kann man Spalte nur lesen oder auch schreiben? Entsteht Spaltenwert durch automatische Numerierung (Sequenz)? Läßt sich Spalte in WHERE Klausel verwenden? Darf Spalte Nullwert enthalten? usw. 423

24 Statement: Daten ändern ResultSet executequery(string) führt SELECT Anweisung aus. int Statement.executeUpdate(String) führt INSERT, UPDATE oder DELETE Anweisung aus. Liefert Anzahl betroffener Zeilen (»Update count«). Auch für sonstige Befehle (»CREATE...«) geeignet. boolean execute(string) führt beliebige SQL Anweisung aus. Liefert true, falls Ergebnis ein ResultSet ist ResultSet rs = stmt.getresultset(); Liefert false, falls Ergebnis ein Update count ist int count = stmt.getupdatecount(); 424

25 Statement: vorbereitete Anweisungen Aufbau der Anweisung fest, Parameter wechseln Beispiel PreparedStatement pstmt = con.preparestatement ("INSERT INTO temperaturen VALUES (?,?)"); pstmt.setstring(1, "{d }"); pstmt.setint(2, 2); pstmt.executeupdate(); pstmt.setstring(1, "{d }"); pstmt.setint(2, 0); pstmt.executeupdate(); pstmt.setstring(1, "{d }"); pstmt.setnull(2, Types.INTEGER); pstmt.executeupdate(); pstmt.setstring(1, "{d }"); pstmt.setint(2, 2); pstmt.executeupdate(); Läßt sich auch für Queries nutzen. 425

26 Statement: Stapelverarbeitung Mehrere SQL Anweisungen in einem Rutsch ausführen (optionale JDBC Operation) Schritt 1: Anweisungen sammeln Schritt 2: Stapel ausführen void clearbatch() Stapel löschen void addbatch(string sql) SQL Anweisung zum Stapel hinzufügen int[] executebatch() Stapel ausführen Ergebniscode pro Anweisung 426

27 DBMS Metadaten Connection Methode public DatabaseMetaData getmetadata() Methoden liefern Informationen über das DBMS, SQL Features, JDBC Treiber, Tabellen, Datenbankprozeduren u.v.a.m. Nicht jeder JDBC Treiber unterstützt jede Methode von DatabaseMetaData. Richtig: SQLException Falsch: Fehlende oder falsche Informationen 427

28 DBMS Metadaten int Methoden: beschreiben technische Einschränkungen Maximale Anzahl von Spalten je Tabelle Größte Länge einer SQL Anweisung usw. boolean Methoden: Fähigkeit verfügbar oder nicht. Beispiele: boolean supportsansi92entrylevelsql() boolean supportsansi92fullsql() Ergebnisse häufig als ResultSet Beispiel: unterstützte Datentypen mittels Servlet anzeigen 428

29 Beispiel: DBMS Metadaten anzeigen 429

30 Beispiel: DBMS Metadaten anzeigen 430

31 Beispiel: DBMS Metadaten anzeigen package de.rainer_klute.jdbc; import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class DBInfo extends HttpServlet { /** * <p>initializes the servlet by setting the * jdbc.drivers system property from the * "databasedrivers" servlet context init * parameter.</p> * * <p><strong>fixme:</strong> The method should * append only those driver class names that are not * already in the "jdbc.drivers" property.</p> */ public void init(servletconfig config) throws ServletException 431

32 Beispiel: DBMS Metadaten anzeigen { } final String driverprop = "jdbc.drivers"; super.init(config); StringBuffer newdrivers = new StringBuffer(); String olddrivers = System.getProperty(driverProp); if (olddrivers!= null) { newdrivers.append(olddrivers); newdrivers.append( : ); } String s; if ((s = config.getservletcontext(). getinitparameter ("databasedrivers"))!= null) newdrivers.append(s); System.setProperty (driverprop, newdrivers.tostring()); 432

33 Beispiel: DBMS Metadaten anzeigen public void doget(httpservletrequest req, HttpServletResponse resp) { PrintWriter out = null; try { out = resp.getwriter(); dogetlocal(req, resp, out); } catch (SQLException ex) { out.println("<pre>"); ex.printstacktrace(out); out.println("</pre>"); } catch (IOException ex) { out.println("<pre>"); ex.printstacktrace(out); out.println("</pre>"); } } 433

34 Beispiel: DBMS Metadaten anzeigen private void dogetlocal(httpservletrequest req, HttpServletResponse resp, PrintWriter p) throws SQLException { // Parameter für Connection ermitteln: ServletContext sc = getservletcontext(); String url = sc.getinitparameter("databaseurl"); String user = sc.getinitparameter("databaseuser"); String password = sc.getinitparameter("databasepassword"); // Datenbankverbindung aufbauen: Connection con = DriverManager.getConnection (url, user, password); DatabaseMetaData dbmd = con.getmetadata(); 434

35 Beispiel: DBMS Metadaten anzeigen p.println("<div>"); p.println("<p>database system: " + dbmd.getdatabaseproductname() + " " + dbmd.getdatabaseproductversion() + "</p>"); p.println("<p>jdbc driver: " + dbmd.getdrivername() + " " + dbmd.getdriverversion() + "</p>"); ResultSet rs; /* Schemas */ p.println("<p>schemas:</p>"); rs = dbmd.getschemas(); Util.printAsHTML(p, rs); /* Catalogs */ p.println("<p>catalogs:</p>"); rs = dbmd.getcatalogs(); Util.printAsHTML(p, rs); 435

36 Beispiel: DBMS Metadaten anzeigen /* TableTypes */ p.println("<p>table types:</p>"); rs = dbmd.gettabletypes(); Util.printAsHTML(p, rs); /* Tables */ p.println("<p>tables:</p>"); rs = dbmd.gettables(null, null, null, null); Util.printAsHTML(p, rs); /* Data types */ p.println("<p>data types supported by " + "this database system:</p>"); rs = dbmd.gettypeinfo(); Util.printAsHTML(p, rs); // Datenbankverbindung schließen: con.close(); } } p.println("</div>"); 436

37 Beispiel: Klasse Util package de.rainer_klute.jdbc; import java.io.*; import java.sql.*; import java.util.*; /** * <p>contains static methods for dealing with JDBC * objects.</p> * Rainer Klute <klute@rainer klute.de> */ public class Util { 437

38 Beispiel: Klasse Util /** * <p>prints the contents of a {@link ResultSet} to * a {@link PrintWriter} as an HTML table with cell * borders.</p> * p The HTML table is rendered to this * {@link PrintWriter} re The {@link ResultSet} to print * #printashtml(printwriter, ResultSet, Map) */ public static void printashtml(printwriter p, ResultSet rs) throws SQLException { Map m = new HashMap(1); m.put("border", "1"); printashtml(p, rs, m); } 438

39 Beispiel: Klasse Util /** * <p>prints the contents of a {@link ResultSet} to * a {@link PrintWriter} as an HTML table.</p> * p The HTML table is rendered to this * {@link PrintWriter} re The {@link ResultSet} to print tableattr Attributes to use for the * HTML table * #printashtml(printwriter, ResultSet) */ public static void printashtml(printwriter p, ResultSet rs, Map tableattr) throws SQLException { p.print("<table"); /* Print table attributes */ for (Iterator i = tableattr.keyset().iterator(); i.hasnext();) 439

40 Beispiel: Klasse Util { String attr = (String) i.next(); p.print( ); p.print(attr); p.print("=\""); p.print((string) tableattr.get(attr)); p.print( \" ); } p.println(">"); /* Get number of columns */ ResultSetMetaData rsmd = rs.getmetadata(); int columns = rsmd.getcolumncount(); /* Get column names from metadata and print them * to the first table row. */ p.print("<tr>"); for (int i = 1; i <= columns; i++) p.print("<th><p>" + rsmd.getcolumnname(i) + "</p></th>"); p.println("</tr>"); 440

41 Beispiel: Klasse Util } /* Print result set lines. */ while (rs.next()) { p.print("<tr>"); for (int i = 1; i <= columns; i++) { /* Print cell contents. */ String s; Object o; if ((o = rs.getobject(i))!= null) s = o.tostring(); else s = " "; p.print("<td><p>" + s + "</p></td>"); } p.println("</tr>"); } p.println("</table>"); } 441

42 Transaktionen Zusammengehörende Datenbankoperationen Entweder alle ausführen oder keine Beispiel: Überweisung int amount = 100; /* Transaktion einleiten. */ con.setautocommit(false); fromaccount(con, 1, amount); if (Math.random() > 0.5) throw new RuntimeException("Crash"); toaccount(con, 2, amount); /* Transaktion abschließen: Ergebnisse endgültig * in Datenbank schreiben. */ con.commit(); con.setautocommit(true); 442

43 Transaktionen /* * <p>lastschrift</p> */ private static void fromaccount (Connection c, int account, int amount) throws SQLException { /* Alten Kontostand holen. */ PreparedStatement s; s = c.preparestatement ("SELECT saldo FROM konten WHERE konto =?"); s.setint(1, account); ResultSet rs = s.executequery(); rs.next(); int balance = rs.getint(1); /* Neuen Kontostand berechnen. */ balance = amount; 443

44 Transaktionen } /* Neuen Kontostand in Datenbank speichern. */ s = c.preparestatement ("UPDATE konten SET saldo =? " + "WHERE konto =?"); s.setint(1, balance); s.setint(2, account); s.executeupdate(); s.close(); /* * <p>gutschrift</p> */ private static void toaccount (Connection c, int account, int amount) throws SQLException { fromaccount(c, account, amount); } 444

45 Transaktionen void setautocommit(boolean autocommit) true: Jede SQL Anweisung ist separate Transaktion. false: SQL Anweisungen sind zu Transaktionen gruppiert. boolean getautocommit() Zustand erfragen void commit() Transaktion abschließen: Änderungen endgültig in Datenbank schreiben void rollback() Transaktion zurücksetzen: Änderungen verwerfen 445

46 Transaktionen voreinander schützen void settransactionisolation(int level) Legt fest, wie stark Transaktionen voneinander abgeschottet sind. Sind Änderungen während einer Transaktion T1 bereits in einer Transaktion T2 sichtbar? Daumenregel: geringe Abschottung = hoher Durchsatz int gettransactionisolation() Aktuellen Wert abfragen 446

47 Transaktionen voreinander schützen Schmutzlesen (»dirty read«): T1 schreibt Satz, T2 liest Satz, T1 bricht ab Satz ist»dirty«. Einmallesen (»non repeatable read«) T1 liest Satz, T2 ändert Satz, T1 liest Satz noch einmal Satz ist bei jedem Lesen anders. Phantomlesen (»phantom read«) T1 selektiert Relation mit Selektionsbedingung B, T2 fügt Satz ein, der B erfüllt, T1 selektiert Relation mit B noch einmal Relation enthält zusätzlichen»phantomsatz«. 447

48 Transaktionen voreinander schützen TRANSACTION_READ_UNCOMMITTED Erlaubt Schmutzlesen, Einmallesen und Phantomlesen TRANSACTION_READ_COMMITTED Verhindert Schmutzlesen Erlaubt Einmallesen und Phantomlesen TRANSACTION_REPEATABLE_READ Verhindert Schmutzlesen und Einmallesen Erlaubt Phantomlesen TRANSACTION_SERIALIZABLE Verhindert Schmutzlesen, Einmallesen und Phantomlesen 448

49 Parallele SQL Anweisungen Datenbankoperationen benötigen viel Zeit In separatem Thread ausführen und in der Wartezeit datenbankunabhängige Aktivitäten erledigen Benutzeroberfläche aktualisieren usw.... weitere Datenbankoperation parallel ausführen C C C C C S S S S S S RS RS RS RS RS RS RS 449

50 Parallele Anweisungen: Varianten Paralleles ResultSet erzeugen Statement für weitere SQL Anweisung nutzen Nicht möglich, da Statement.execute() das geöffnete ResultSet schließt Paralleles Statement erzeugen Connection für weiteres Statement nutzen JDBC Treiber synchronisiert, falls nötig Güte der Synchronisierung abhängig von DBMS und Treiber Parallele Connection erzeugen

Ziel: Verständnis für Konzepte von JDBC aufbauen

Ziel: Verständnis für Konzepte von JDBC aufbauen 11. JDBC Grundsätzliche Nutzung von JDBC Verbindungsaufbau Anfragen Analyse des erhaltenen Ergebnisses Veränderungen des Ergebnisses Ziel: Verständnis für Konzepte von JDBC aufbauen 253 Überblick: Datenbankanfragen

Mehr

11. JDBC. Grundsätzliche Nutzung von JDBC Verbindungsaufbau Anfragen Analyse des erhaltenen Ergebnisses Veränderungen des Ergebnisses

11. JDBC. Grundsätzliche Nutzung von JDBC Verbindungsaufbau Anfragen Analyse des erhaltenen Ergebnisses Veränderungen des Ergebnisses 11. JDBC Grundsätzliche Nutzung von JDBC Verbindungsaufbau Anfragen Analyse des erhaltenen Ergebnisses Veränderungen des Ergebnisses Ziel: Verständnis für Konzepte von JDBC aufbauen 270 Überblick: Datenbankanfragen

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

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

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

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

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

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

Java und Datenbanken

Java und Datenbanken Java und Datenbanken Benutzerschnittstelle DB-Client Client Benutzerschnittstelle CORBA, HTTP,... DB-Client Anwendungslogik DB-Schnittstelle JDBC, SQLJ Anwendungslogik DB-Schnittstelle Anwendungs- Server

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

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

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

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

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

JDBC. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Institut für Systemsoftware, Johannes Kepler Universität Linz

JDBC. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. Institut für Systemsoftware, Johannes Kepler Universität Linz JDBC JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz JDBC Einführung Verbindungsaufbau Datenbankanweisungen Arbeiten

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

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

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

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

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

Modifikation der Datenbank

Modifikation der Datenbank Modifikation der Datenbank Löschen Einfügen Änderungen Änderungen von Sichten 71 Löschen Wir haben bereits gesehen, dass wir den gesamten Inhalt einer Tabelle r löschen können durch das Kommando: delete

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

JDBC- JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. M. Löberbauer, T. Kotzmann, H. Prähofer

JDBC- JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network. M. Löberbauer, T. Kotzmann, H. Prähofer JDBC- Java Database Connectivity JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer JDBC Einführung Verbindungsaufbau Datenbankanweisungen

Mehr

Tag 5 Inhaltsverzeichnis

Tag 5 Inhaltsverzeichnis Tag 5 Inhaltsverzeichnis ODBC / JDBC: Ziel und Prinzip JDBC Überblick Erstes Beispiel Queries (Execute- und UpdateQuery) Der Typ "ResultSet" Diverses Metadata PreparedStatement Transaktionen und Batches

Mehr

Java Database Connectivity API / JDBC

Java Database Connectivity API / JDBC Java Database Connectivity API / JDBC Motivation Design Treiber Grundlagen Metadaten Transaktionen Exceptions Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation Problem: Zugriff auf DBMS

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

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

Tag 5 Inhaltsverzeichnis

Tag 5 Inhaltsverzeichnis Tag 5 Inhaltsverzeichnis ODBC / JDBC: Ziel und Prinzip JDBC Überblick Erstes Beispiel Queries (Execute- und UpdateQuery) Der Typ "ResultSet" Diverses Metadata PreparedStatement Transaktionen und Batches

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

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

Oracle: Abstrakte Datentypen:

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

Mehr

PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN

PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN Mathias Weber und Annette Bieniusa ÜBERBLICK Spark SQL SQL in Java SPARK WAS IST DAS? Framework zur Erstellung von Web-Anwendungen in Java Einfach zu verwenden

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

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

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

Mehr

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

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

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

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken & Informationssysteme Übungen Teil 1 Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from

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

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

5.8 Bibliotheken für PostgreSQL

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

Mehr

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

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

Mehr

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets - Praktikum Datenbanken und verteilte Systeme SS 2008 - Java Server Pages und Servlets - Verteilte Systeme und Informationssysteme (VSIS) Department Informatik Universität Hamburg Infrastruktur vsispoolx

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

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

Abfragen (Queries, Subqueries)

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

Mehr

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

Klausur zur Vorlesung Datenbanksysteme I

Klausur zur Vorlesung Datenbanksysteme I Prof. Dr. W. Kießling 30.01.2002 Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg Klausur zur Vorlesung Datenbanksysteme I Wintersemester 2001/2002 Name Vorname Matrikelnummer Aufgabe

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

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

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

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Nullwerte und Primitive Typen Wenn parent==null, was wird in der Datenbank gespeichert? Wenn man aus der DB liest, wie kann

Mehr

MySQL mit MyLinux. boehm@2xp.de. 2/2003 boehm@2xp.de Java unter Linux

MySQL mit MyLinux. boehm@2xp.de. 2/2003 boehm@2xp.de Java unter Linux Bild: www.carsten-lehmann.de MySQL mit MyLinux boehm@2xp.de 1 MySQL mit MyLinux Überblick über MySQL & Co Überblick über MySQL MySQL in 5 Minuten JDBC mit MySQL Ende 2 Überblick über MySQL & Co 3 Datenbanken

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

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

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

Mehr

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

Datenbank Anbindung. Arthur Zaczek. Nov 2014

Datenbank Anbindung. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Datenbank Anbindung 1.1 Übersicht Datenbankanbindung mit JDBC und ADO.NET. 1.2.NET ADO.NET Kein Treiberkonzept. Jede Datenbank hat eigenes Set an Klassen. Meistens wird für nur

Mehr

6. Übung - Datenbankprogrammierung

6. Übung - Datenbankprogrammierung 6. Übung - Datenbankprogrammierung Java Database Connectivity (JDBC) und Open Database Connectivity (ODBC) Ziel der Übung. Kommunikation von C- und Java-Anwendungen mit DB2. Aufgaben Teil 1: JDBC Verwenden

Mehr

Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS Wie kommen die Befehle zum DBMS Dr. Karsten Tolle Datenbanken und Informationssysteme Wie kommen die Befehle zum DBMS Bisher gesehen: SQL direkt zum DBMS Workbench Kommandozeile IBM Query Tool Weitere?

Mehr

JDBC (Stichworte) Udo Kelter

JDBC (Stichworte) Udo Kelter JDBC (Stichworte) Udo Kelter 19.12.2011 Zusammenfassung dieses Lehrmoduls JDBC (Java Database Connectivity) ist eine Schnittstelle, über die von Java-Programmen aus auf die Inhalte relationaler Datenbanken

Mehr

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

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

Mehr

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte

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

Datenbanksysteme 2009

Datenbanksysteme 2009 Datenbanksysteme 2009 Vorlesung vom 15.06.09 noch Kapitel 9: Datenbankapplikationen Oliver Vornberger Institut für Informatik Universität Osnabrück Datenbankapplikationen MS Visio MS Access Embedded SQL

Mehr

Datenbanksysteme 2015

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

Mehr

<< XML & Relationale DB >>

<< XML & Relationale DB >> XML & DB > 1 XML & DB - RDBMS Das Problem: XML RDBMS 2 XML Daten sind als Bäume strukturiert. RDBMS sind tabellenorientiert. RDBMS können nur sehr aufwendig Bäume speichern. Einsatz

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

6. Java Database Connectivity. Prof. Dr.-Ing. Wolfgang Lehner

6. Java Database Connectivity. Prof. Dr.-Ing. Wolfgang Lehner 6. Java Database Connectivity Prof. Dr.-Ing. Wolfgang Lehner > Roadmap intern intern/extern extern SQL UDF SQL SP XQUERY Trigger ext. UDF ext. SP SQLJ Embedded SQL JDBC ODBC OLE.NET Kommunikationslast

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

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

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

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

Java-Datenbankzugriff mit JDBC

Java-Datenbankzugriff mit JDBC Java-Datenbankzugriff mit JDBC Vorlesungsmaterial zu JDBC von Prof. Dr. Stefan Böttcher Inhaltsverzeichnis: 1. Praktische Hinweise zum Arbeiten mit JDBC, ODBC und dem Datenbanksystem 2. Übungsaufgaben

Mehr

Filterprogrammierung: Beispiel

Filterprogrammierung: Beispiel Filterprogrammierung: Beispiel package de.rainer_klute.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** * this demo filter replaces a configurable hostname in a *

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

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

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration 3.5.2004. JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration 3.5.2004. JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven JSP, Tomcat, JDBC Übung Informationsintegration 03.05.2004 Agenda JSP & Tomcat Syntax Impizite Objekte Direktiven JDBC 2 Java Server Pages - JSP Was ist eine JSP? Bietet die Mögichkeit, dynamischen Inhat

Mehr

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

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

Mehr

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

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

6.9 Java Server Pages

6.9 Java Server Pages DocumentCollection dc = db.ftsearch(abfrage); Document d = dc.getfirstdocument(); while (d!= 0) { String Name = db.gettitle(); out.println(name + ""); d = dc.getnextdocument(); catch (NotesException

Mehr

Internetanbindung von Datenbanken

Internetanbindung von Datenbanken Internetanbindung von Datenbanken SQLJ Servlets http://galahad.informatik.fh-kl.de/frankfurter SQLJ-1 Gliederung Einführung in Servlets Entwicklungswerkzeuge Servlets HTML-Beispiel Servlet Beispiel Servlet

Mehr

Datenbanksysteme I. Aufgabe 1: Views und Temporäre Relationen. Lösungsvorschlag:

Datenbanksysteme I. Aufgabe 1: Views und Temporäre Relationen. Lösungsvorschlag: Universität Augsburg, Institut für Informatik Wintersemester 2010/2011 Prof. Dr. W. Kießling 10. Dez. 2010 Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 6 Aufgabe 1: Views und Temporäre Relationen Datenbanksysteme

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

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Datenbankzugriff mit JDBC Praktikum aus Java Praktikum SS 2010 Gerald.Ehmayer@borland.com 1 Datenbankzugriff mit JDBC HSQLDB Installation und Anwendung JDBC Grundlagen, DriverManager, Connection, Java

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

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

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

Mehr

JDBC (Java Database Connectivity)

JDBC (Java Database Connectivity) JDBC (Java Database Connectivity) WPF Internetanbindung von Datenbanken Prof. Dr. Schiefer WS 1999/2000 Ebert Adam Sven Macke Tobias Semmet JDBC - 1 Inhalt Einführung in JDBC und JDBC-API Adam Ebert Einführung

Mehr

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Programmieren / Java Datenbankzugriff mit JDBC Frage Nr. 13 Datenbankzugriff mit JDBC Ausarbeitung einer Maturafrage aus dem Fach P r o g r a m m i e r e n / J a v a Andreas Hechenblaickner 5CDH HTBLA

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................... 5 1.2 SQl-Anweisungen und Ergebnismengen.......................

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

SQL und Java. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

SQL und Java. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 5 SQL und Java Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester 2007/08

Mehr

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

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

Mehr

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse

Mehr

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL 1 Transaktionen in SQL Um Daten in einer SQL-Datenbank konsistent zu halten, gibt es einerseits die Möglichkeit der Normalisierung, andererseits sog. Transaktionen. 2 Was ist eine Transaktion Eine Transaktion

Mehr