Vorlesung Datenbanksysteme vom JDBC. Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Datenbanksysteme vom JDBC. Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements"

Transkript

1 Vorlesung Datenbanksysteme vom JDBC Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements

2 Einführung DB-Anbindung an Programmiersprachen Embedded SQL vs. Call Level Interface JDBC-Treiber Typen JDBC-Klassen/Interfaces JDBC-Quellen JDBC-Beispiel

3 DB-Anbindung an Programmiersprachen 1. Erweiterung der Programmiersprache: DB-Konstrukte zur Programmiersprache hinzufügen eher historische Bedeutung (80er Jahre) z.b. Pascal/R ("Relationales Pascal") 2. Embedded SQL: Speziell markierte SQL-Anweisungen Pre-Compiler wandelt diese in Aufrufe von (meist proprietären) Bibliotheksfunktionen der "Wirtsprache" um. z.b.: Embedded SQL in C/C++, SQLJ 3. CLI (Call Level Interface): Verwendung von standardisierten Prozeduraufrufen z.b.: SQL/CLI, ODBC, JDBC 3

4 Embedded SQL Beispiel: C/C++ EXEC SQL BEGIN DECLARE SECTION; long matrnr; char name[30]; int semester; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE c_studenten CURSOR FOR SELECT * FROM Studenten; EXEC SQL OPEN c_studenten; while (SQLCODE == 0) { EXEC SQL FETCH c_studenten INTO :matrnr, :name, :semester; printf("%d, %s %d", matrnr, name, semester); } EXEC SQL CLOSE c_studenten; 4

5 Embedded SQL Beispiel: SQLJ #sql iterator StudIterator (int MatrNr, String Name, int Semester); StudIterator i_stud; #sql i_stud = { select * from Studenten }; while (i_stud.next()) { System.out.println(i_stud.MatrNr() + ", " + i_stud.name() + ", " + i_stud.semester()); } i_stud.close(); 5

6 Embedded SQL: Merkmale Üblicherweise "statisches SQL", d.h.: Struktur der Anfragen steht zur Compile-Zeit fest. Vor-/Nachteile: weiter gehende Überprüfungen möglich (z.b.: Syntax-Prüfung der SQL-Anfragen) aber unflexibel Häufig wird aber auch "dynamisches SQL" unterstützt (d.h.: Anfrage in String-Variable), z.b.: Pro*C von Oracle. Informationsaustausch zw. SQL und Wirtsprache: Host-Variablen + Cursor Portabilität: Ursprünglich nur auf Source Code Ebene, d.h.: für Verwendung eines anderen DBMS war Recompilierung nötig. SQLJ: Pre-Compiler ("Translator") erzeugt JDBC => gleiche Flexibilität wie CLI (aber bequemer). 6

7 Call Level Interfaces (1) Erster CLI-Standard: Microsoft, Lotus, etc: definieren eine Menge von Funktionen unter dem Namen "Database Connectivity" SAG (SQL Access Group: Oracle, Informix, etc.): auf Database Connectivity aufbauend wird ein CLI definiert. 1992: CLI wird von ANSI und ISO als Basis eines neuen Standards übernommen. ODBC (Open Database Connectivity): 1992: von Microsoft speziell für Windows entwickelt, später auch andere Betriebssysteme (insbesondere UNIX) Implementierung + Erweiterung des CLI-Standard Hauptsächlich für C/C++; aber auch andere Sprachen 7

8 Call Level Interfaces (2) SQL/CLI: Standardisierungsarbeiten der ANSI/ISO SQL Gruppen auf der Basis von ODBC. 1995: Verabschiedung des Standards : SQL/CLI 1999: Erweiterung des SQL/CLI im Zuge der SQL- Erweiterungen durch SQL-99. JDBC: Basierend auf ODBC aber weniger komplex, nützt Java- Möglichkeiten (z.b. objektorientiert, try-catch für Error Handling, ) Versionen: 1997: JDBC 1.0 in J2SE, ab Version 1.4: JDBC 3.0 letzte Version: JDBC 4.0 8

9 JDBC-Treiber Typen (1) Type 1: JDBC-ODBC-Bridge + ODBC-driver: JDBC-ODBC-Bridge ruft ODBC-Methoden auf ODBC-Treiber nötig. Type 2: Native-API partly- Java driver JDBC-Treiber ruft herstellerspezifische DB-Bibliotheken auf. => Diese Bibliotheken sind am Client erforderlich z.b.: Oracle OCI driver Type 1 Type 2 9

10 JDBC-Treiber Typen (2) Type 3: JDBC-Net pure Java driver: JDBC-Treiber ruft Middlewarespezifische Methoden auf. Middleware stellt Connectivity zu unterschiedlichen DB- Systemen bereit. Type 4: Native-protocol pure Java driver JDBC-Treiber kommuniziert direkt mit dem DB-Server. Außer JDBC-Treiber keine weitere SW am Client nötig. => beste Lösung für Applets z.b.: Oracle thin driver Type 4 Type 3 10

11 JDBC-Klassen/Interfaces package java.sql, z.b.: DriverManager Connection DatabaseMetaData Statement, PreparedStatement, CallableStatement ResultSet ResultSetMetaData SQLException, SQLWarning Types package javax.sql, z.b.: DataSource 11

12 JDBC-Quellen JavaDoc: Tutorials und weitere Informationen im Web: GettingStartedTOC.fm.html Bücher (für die VL Datenbanksysteme nicht erforderlich!): JDBC API Tutorial and Reference: Maydene Fisher, Jon Ellis, Jonathan Bruce (O'Reilly, 2003) Datenbanken & Java JDBC, SQLJ, ODMG und JDO: Gunter Saake, Kai-Uwe Sattler (dpunkt.verlag, 2003) 12

13 JDBC-Beispiel DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:xe", "user", "password"); Statement stmt = conn.createstatement(); ResultSet rs = stmt.executequery ("select * from Studenten"); // Achtung: kein ';' als SQL-Begrenzer! while(rs.next()){ System.out.print(rs.getString(1) + ", " ); System.out.println(rs.getString(3)); } rs.close(); stmt.close(); conn.close(); 13

14 JDBC-Verbindungen Verbindungsaufbau Eigenschaften/Methoden einer Verbindung Verbindungsabbau Fehlerbehandlung

15 Verbindungsaufbau (1) DB-spezifischer JDBC-Treiber im CLASSPATH: für die Laborübung: ojdbc14.jar Möglichkeiten einen Treiber zu registrieren: Class.forName("oracle.jdbc.driver.OracleDriver"); oder: DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); Parameter von getconnection() in der Laborübung: Treiber: jdbc:oracle:thin DB-Adresse: uebung.dbai.tuwien.ac.at:1521:uebung DB-User/Passwort: laut Mail an LVA-TeilnehmerInnen d.h.: Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@uebung.dbai.tuwien.ac.at:1521:uebung", "u<matrikelnr>", "<passwort>"); 15

16 Verbindungsaufbau (2) "Klassische" Methode: DriverManager.getConnection(" ") "Modernere" Methode: mittels DataSource Interface Die DB-Hersteller stellen spezfische Implementierungen von DataSource bereit. Basis-Implementierung funktioniert im wesentlichen wie DriverManager. Daneben stellen die DB-Hersteller aber auch Connection Pooling Implementierungen bereit => Connection Objekt als Teil eines Connection Pools. Vorteil: Connection Pooling ist wesentlich Ressourcenschonender. 16

17 Beispiel import javax.sql.datasource; import oracle.jdbc.pool.oracledatasource; DriverManager.registerDriver (new oracle.jdbc.driver.oracledriver()); OracleDataSource ods = new OracleDataSource(); ods.setdrivertype("thin"); ods.setservername("uebung.dbai.tuwien.ac.at"); ods.setportnumber(1521); ods.setdatabasename("uebung"); ods.setuser(dbuser); ods.setpassword(passwort); Connection conn = ods.getconnection(); Statement stmt = conn.createstatement(); 17

18 Eigenschaften/Methoden DB-Metadaten: mittels conn.getmetadata() Informationen über die DB bzw. die Verbindung, z.b.: DatabaseMetaData dbmeta = conn.getmetadata(); System.out.println("DB-ProductName: "+ dbmeta.getdatabaseproductname()); System.out.println("User: "+ dbmeta.getusername()); Transaktionssteuerung: AUTOCOMMIT on/off: conn.setautocommit(false); Transaktion beenden, z.b.: conn.commit(); (oder: conn.rollback();) Isolation Level setzen bzw. auslesen, z.b.: conn.gettransactionisolation() 18

19 Verbindungsabbau Ressourcenbelegung in der Datenbank: JDBC-Objekte können (abgesehen vom Speicher des Java-Programms) auch Ressourcen in der Datenbank belegen, z.b.: Oracle-Fehler "max cursors exceeded", wenn zu viele Statements gleichzeitig offen sind. Daher sollten Connections und Statements (und am besten auch ResultSets) immer explizit geschlossen werden, sobald sie nicht mehr benötigt werden, z.b.: rs.close(); stmt.close(); conn.close(); Hierarchie ResultSet < Statement < Connection, d.h.: Beim Schließen einer Connection werden implizit alle Statements dieser Connection geschlossen. 19

20 Fehlerbehandlung SQLException / SQLWarning: Die Methoden des JDBC-API werfen im Fehlerfall eine SQLException. Connections, Statements und ResultSets können auch SQLWarnings produzieren. Diese werden aber nicht geworfen sondern müssen aktiv angefordert werden mittels stmt.getwarnings() oder conn.getwarnings() Es kann auch mehrere SQLExceptions und SQLWarnings geben (als verkettete Liste). Felder von SQLException und SQLWarning: code: DB-spezifischer Fehlercode state: SQL-State laut SQL/CLI Standard msg: DB-spezifische Fehlermeldung 20

21 Beispiel für einen catch-block try { // JDBC-Aufrufe } catch (SQLException e) { while (e!= null) { System.out.println("Code = " + e.geterrorcode()); System.out.println("Message = " + e.getmessage()); System.out.println("State = " + e.getsqlstate()); e = e.getnextexception(); } } finally { try { if (rs!= null) { rs.close(); } if (stmt!= null) { stmt.close(); } if (conn!= null) { conn.close(); } } catch (SQLException e) { e.printstacktrace(); } // sauberer: finally mit geschachteltem try-catch } 21

22 Schreibzugriff mit SQL execute-methoden: Überblick Beispiel: DDL + DML

23 Execute-Methoden: Überblick executequery(): für SELECT-Anweisungen executequery() liefert ein ResultSet executeupdate(): für Schreibzugriff: DDL- und DML-Befehle executeupdate() liefert einen Integer-Wert (= Anzahl der betroffenen Tupel; bei DDL ist dieser Wert immer 0). Weitere Methoden: executebatch(): zuerst mehrere SQL-Befehle mittels addbatch() speichern und dann gemeinsam abschicken execute() 23

24 Beispiel: DDL + DML count = stmt.executeupdate ("DROP TABLE Abteilungen CASCADE CONSTRAINTS"); count = stmt.executeupdate ("CREATE TABLE Abteilungen (" + "AbtNr INTEGER PRIMARY KEY," + "Chef INTEGER," + "Bezeichnung VARCHAR(30)," + "Standort VARCHAR(30))"); count = stmt.executeupdate ("ALTER TABLE Abteilungen " + "ADD CONSTRAINT chef_fk FOREIGN KEY (Chef) " + "REFERENCES Mitarbeiter (PersNr)"); count = stmt.executeupdate ("INSERT INTO Abteilungen "+ "VALUES (1001, 102, 'Abteilung A', 'Ort A')"); 24

25 SELECT-Anweisungen ResultSet-Verarbeitung ResultSet-Metadaten SQL- vs. Java-Typen scrollable/updatable ResultSet

26 ResultSet-Verarbeitung SELECT-Anweisung verwendet die executequery() Methode. Diese liefert das Ergebnis als ResultSet. Das ResultSet ist ein Iterator, der mittels next() Methode die einzelnen Datensätze durchläuft. Der Zugriff auf die Spalten des aktuellen Datensatzes erfolgt durch typspezifische get-methoden des ResultSet, z.b.: getint(), getstring(), getdouble(), getdate(), Dieser Zugriff auf die Spalten geschieht entweder über den Spaltennamen oder über die Spaltenposition Default-mäßig dient ein ResultSet nur zum sequentiellen Durchlaufen in Vorwärts-Richtung und nur zum Lesen. Man kann aber auch explizit ein "scrollable" und/oder "updatable" ResultSet definieren. 26

27 Beispiel ResultSet rs = stmt.executequery("select "); while(rs.next()){ // Zugriff mittels Spalten-Position: String s = rs.getstring(1); // Name int i = rs.getint(2); // PersNr // oder: Zugriff mittels Spalten-Name: float f = rs.getfloat("gehalt"); double do = rs.getdouble("gehalt"); Date da = rs.getdate("geboren"); Timestamp t = rs.gettimestamp("geboren"); } 27

28 ResultSet-Metadaten Zu jedem ResultSet kann man MetaDaten abfragen ResultSetMetaData rsmd = rs.getmetadata(); Diese Metadaten enthalten Informationen über die Anzahl der Spalten einer Zeile sowie über die einzelnen Spalten (wie Name, JDBC-Typangabe, DB-spezifische Typbezeichnung, ) Beispiel: int anzahl = rsmd.getcolumncount(); for (int i = 1; i <= anzahl; i++) { columnname = rsmd.getcolumnname(i); dbspecifictype = rsmd.getcolumntypename(i); columntypeint = rsmd.getcolumntype(i); } 28

29 SQL- vs. Java-Typen (1) 1. Generische Typ-Bezeichnungen für SQL-Typen: Problem: Die verschiedenen DB-Systeme bieten zwar SQL- Typen mit ähnlicher Funktionalität an; diese Typen haben aber eventuell unterschiedliche Namen, z.b.: LONG RAW, IMAGE, BYTE, LONGBINARY sind im wesentlichen gleich. Für Portabilität wäre es wichtig, generische Bezeichnungen für die SQL-Typen zu verwenden, z.b. als return-wert von getcolumntype() (in ResultMetaData). Lösung in JDBC: Die Klasse Types (in java.sql) bietet eine Reihe von static int Definitionen für die verschiedenen SQL-Typen, z.b.: LONGVARBINARY für die SQL-Typen LONG RAW, IMAGE, etc. 29

30 SQL- vs. Java-Typen (2) 2. Konvertierung von Werten zw. Java-Typen und SQL-Typen. Problem: Selbst wenn man für die SQL-Typen einheitliche Bezeichner definiert, muss man erst festlegen, wie man Werte solcher SQL-Typen im Java-Programm speichert. Einfachste Lösung: Solange man z.b. bloß die Werte am Bildschirm ausgeben will, kann man alle SQL-Werte als Strings auffassen. Für die Weiterverarbeitung im Java- Programm ist das aber üblicherweise ungeeignet. Bessere Lösung: Type Mapping zwischen den generischen JDBC-Types und tatsächlichen Java-Typen, z.b.: siehe nächste Folie. 30

31 JDBC Type Java Type CHAR, VARCHAR, LONGVARCHAR NUMERIC, DECIMAL BIT, BOOLEAN TINYINT / SMALLINT / INTEGER / BIGINT REAL FLOAT, DOUBLE BINARY, VARBINARY, LONGVARBINARY DATE TIME TIMESTAMP String java.math.bigdecimal boolean byte / short / int / long float double byte[] java.sql.date java.sql.time java.sql.timestamp 31

32 Scrollable/Updatable ResultSet Default-Verhalten von ResultSets: Read-only nur Vorwärtsbewegung möglich (mittels rs.next()) Erweiterte Möglichkeiten bei ResultSets: "Type": Forward_only vs. scrollable "Concurrency Mode": read_only vs. updatable Das ResultSet Verhalten wird beim createstatement() Aufruf festgelegt: default-verhalten: conn.createstatement(); erweitert, z.b.: stmt = conn.createstatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 32

33 Navigation im Scrollable ResultSet Folgende Methoden stehen zur Verfügung: first() last() next() previous() beforefirst() afterlast() absolute(x): Sprung zur Zeile mit Zeilennummer x relative(x): Vorwärtsbewegung um x Zeilen (bei x < 0 erfolgt entsprechende Rückwärtsbewegung). 33

34 Schreibzugriff auf ResultSet (1) UPDATE: Ändern von einzelnen Spalten-Werten der aktuellen Zeile mittels Typ-spezifischer update-methode Festschreiben der geänderten, aktuellen Zeile mittels updaterow()-methode DELETE: mittels deleterow()-methode Beispiel: rs = stmt.executequery("select MatrNr,VorlNr,... FROM pruefen"); while(rs.next()) { l_note = rs.getfloat("note"); if (l_note == 5) rs.deleterow(); else if (l_note >= 2) { rs.updatefloat("note", l_note - 1); rs.updaterow(); } } 34

35 Schreibzugriff auf ResultSet (2) Warnung: Erzeugung eines updatable ResultSet funktioniert (bei Oracle) nur, wenn im SELECT Statement die Ergebnis- Attribute explizit aufgelistet werden. Bei SELECT * FROM... wird anstelle des updatable ResultSet nur ein scrollable ResultSet erzeugt. Beispiel: folgendere Code funktioniert nicht! rs = stmt.executequery("select * FROM pruefen"); while(rs.next()) { l_note = rs.getfloat("note"); if (l_note == 5) rs.deleterow();... } 35

36 Schreibzugriff auf ResultSet (3) INSERT: Es gibt eine eigene "insert row". Das Einfügen einer neuen Zeile geschieht durch Wertzuweisungen an die Spalten der "insert row". Festschreiben der neuen Zeile: mittels insertrow()- Methode. Beispiel: rs.movetoinsertrow(); rs.updatefloat("note", l_note - 1); rs.updateint("matrnr", l_matrnr); rs.updateint("persnr", neuerpruefer); rs.updateint("vorlnr", l_vorlnr); rs.insertrow(); rs.movetocurrentrow(); 36

37 prepared/callable Statements Prepared Statements Stored Procedures Callable Statements Escape Syntax

38 Prepared Statements Ziel: die gleiche Art von SQL-Statement jeweils mit teilweise unterschiedlichen Werten mehrmals ausführen., z.b.: SELECT * FROM Studenten WHERE Semester =? Lösung in JDBC: mittels "prepared Statement" ein SQL-Statement mit "bind variables" definieren. Vor jedem execute-aufruf werden diese bind variables mittels Typ-spezifischen Set-Methoden neu versorgt. Vorteil: Das DB-System muss manche Arbeiten nur ein Mal durchführen (z.b. Parsen, Anfrage-Optimierung) Bemerkung: Prepared Statements können im Prinzip für beliebige Arten von SQL- (oder auch PL/SQL-) Statements verwendet werden, z.b.: stored procedures mit ausschließlich INPUT-Parametern. 38

39 Beispiel PreparedStatement pstmt = conn.preparestatement ("SELECT * FROM Studenten WHERE Semester =? "); for (int j = 1; j <= 20; j++ ) { pstmt.setint (1, j); rs = pstmt.executequery(); System.out.println("Studenten im " + j + "-ten Semester: "); while(rs.next()){ System.out.print(rs.getString(1) + ", " ); System.out.print(rs.getString(2) + ", " ); System.out.println(rs.getString(3)); } } 39

40 Stored Procedures/Functions Definition der stored procedure: "ganz normal" mittels CREATE PROCEDURE in executeupdate()-methode Aufruf: am einfachsten mittels anonymem PL/SQL-Block: Prozedur ohne Parameter: direkt in executeupdate() Prozedur mit ausschließlich Input Parametern: Falls die Parameter-Werte erst zur Laufzeit feststehen, muss ein Prepared Statement mit bind variables verwendet werden. Prozedur mit Output Parametern oder Funktion: mittels Callable Statement (siehe übernächste Folie) 40

41 Beispiel count = stmt.executeupdate( "CREATE OR REPLACE PROCEDURE p_copy_student AS " + "CURSOR c_student IS SELECT * FROM Studenten s; " + "BEGIN " + " FOR rec_student IN c_student LOOP " + " INSERT INTO Studenten_Kopie " + " VALUES (rec_student.matrnr, " + " rec_student.name, rec_student.semester); " " END LOOP; " + "END;"); count = stmt.executeupdate( "BEGIN " + " p_copy_student;" + "END;" ); 41

42 Callable Statements Ziel: Bei Aufruf einer stored procedure mit Output-Parametern bzw. einer stored function werden Werte zurückgeliefert. Diese müssen in Java-Variablen umgespeichert werden. Lösung in JDBC: mittels "callable Statement" ein SQL-Statement mit "bind variables" definieren. Der Typ jeder Output-Variable (bzw. des Return-Werts einer stored function) muss "registriert" werden. Vor jedem execute-aufruf werden die Input-Variablen mittels Typ-spezifischen Set-Methoden neu versorgt. Nach jedem execute-aufruf werden die Output-Variablen mittels Typ-spezifischen Get-Methoden ausgelesen. 42

43 Beispiel (1) count = stmt.executeupdate( "CREATE OR REPLACE PROCEDURE p_copy_student " + " (l_sem IN NUMBER, l_anzahl OUT NUMBER) AS " + " CURSOR c_student IS SELECT * FROM Studenten s " + " WHERE s.semester = l_sem; " + "END;"); CallableStatement cstmt = conn.preparecall( "BEGIN " + " p_copy_student (?,?);" + "END;" ); cstmt.registeroutparameter(2, Types.INTEGER); 43

44 Beispiel (2) for (int j = 1; j <= 20; j++ ) { cstmt.setint (1, j); cstmt.executeupdate(); anzahl = cstmt.getint(2); if (anzahl!= 0) { System.out.println("Anzahl der Studenten im " + j + ". Semester: " + anzahl); } } 44

45 Escape Syntax (1) Problem: Die konkrete Syntax für manche SQL-Features sind in besonderer Weise DB-Hersteller spezifisch, z.b.: Aufruf von stored procedures, Built-in Funktionen, Date/Time-Format, etc. Ziel: trotzdem portablen Java-Code erstellen. Lösung in JDBC: mittels { } wird dem JDBC-Treiber mitgeteilt, dass er die (standardisierte) "escape syntax" in die DB-spezifische Syntax umwandeln soll. Schreibweise: {<keyword> }, wobei <keyword> z.b. folgende Werte haben kann: call (für Aufruf einer stored procedure/function) fn (für Aufruf einer built-in Funktion) d bwz. t (für Date bzw. Time-Angabe). 45

46 Escape Syntax (2) Beispiele: Prozedur-Aufruf: cstmt = conn.preparecall( "{ call p_copy_student (?,?) }"); Funktions-Aufruf: cstmt = conn.preparecall( "{? = call f_anzahl (?) }"); Datums-Angabe, Built-in Funktion: stmt.executeupdate("update Mitarbeiter "+ "SET Geboren = {d ' '}, " + " Gehalt = {fn ceiling( )} " + "WHERE PersNr = 1005"); Bemerkung: Wenn die DB-Hersteller einmal SQL vollständig unterstützen (und nicht nur den Entry Level), dann ist die Escape Syntax in JDBC überflüssig. 46

47 JDBC: autocommit = false Transaktionssteuerung in JDBC Oracle-Verhalten

48 Transaktionssteuerung in JDBC Autocommit vs. explizite Transaktionssteuerung: By default a Connection object is in auto-commit mode, which means that it automatically commits changes after executing each statement. If auto-commit mode has been disabled, the method commit must be called explicitly in order to commit changes; otherwise, database changes will not be saved. 48

49 Oracle-Verhalten User Guide: /b14355/basic.htm#i By default, data manipulation language (DML) operations are committed automatically as soon as they are run. This is known as the auto-commit mode. However, you can disable auto-commit mode with the following method call on the Connection conn.setautocommit(false); If you disable the auto-commit mode, then you must manually commit or roll back changes with the appropriate method call on the Connection conn.commit(); or conn.rollback(); 49

50 Oracle-Verhalten Beobachtetes Verhalten: Wenn die Session ohne conn.close() endet, wird implizit ein rollback durchgeführt. Wenn die Session sauber mittels conn.close() geschlossen wird, dann wird implizit ein commit durchgeführt!! Konsequenz: Auf keinen Fall auf ein bestimmtes Default Verhalten vertrauen und immer explizit commit() oder rollback() durchführen!! 50

Vorlesung Datenbanksysteme vom JDBC. Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements

Vorlesung Datenbanksysteme vom JDBC. Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements Vorlesung Datenbanksysteme vom 17.10.2007 JDBC Einführung JDBC-Verbindungen Schreibzugriff mit SQL SELECT Anweisungen prepared/callable Statements Einführung DB-Anbindung an Programmiersprachen Embedded

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

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

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

JDBC. VU Datenbanksysteme. Wolfgang Fischl

JDBC. VU Datenbanksysteme. Wolfgang Fischl JDBC VU Datenbanksysteme Wolfgang Fischl Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester 2015/16 Gliederung Einführung

Mehr

JDBC. VL Datenbanksysteme. Ingo Feinerer

JDBC. VL Datenbanksysteme. Ingo Feinerer JDBC VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung Einführung DB-Anbindung an Programmiersprachen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Datenbanksysteme I Übung: JDBC. Jana Bauckmann Datenbanksysteme I Übung: JDBC Jana Bauckmann Wo reicht SQL alleine nicht? 2 Web-Anwendungen Daten übersichtlich und schön präsentieren Komplizierte Fragestellungen Sind sich 2 Tupel ähnlich? Duplikaterkennung

Mehr

Datenbanksysteme I. Aufgabe 1: Erstellen einer Multimedia-Datenbank. Grundlage sind wiederum bereits implementierte Methoden aus Übungsblatt 6:

Datenbanksysteme I. Aufgabe 1: Erstellen einer Multimedia-Datenbank. Grundlage sind wiederum bereits implementierte Methoden aus Übungsblatt 6: Universität Augsburg, Institut für Informatik Wintersemester 2010/2011 Prof. Dr. W. Kießling 17. Dez. 2010 Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 7 Aufgabe 1: Erstellen einer Multimedia-Datenbank

Mehr

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 18. Dez Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 8

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 18. Dez Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 8 Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 18. Dez. 2009 Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 8 Aufgabe 1: JDBC 2.0 und Scrollable Result Sets Datenbanksysteme

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

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 I Datenbankprogrammierung. 15.6.2009 Felix Naumann

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal,

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

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

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

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

Mehr

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

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

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

Database. Creates. -- Kunde(knr, nname, vname, adresse:adresse.aid) CREATE TABLE Kunde ( NUMERIC(13) PRIMARY KEY,

Database. Creates. -- Kunde(knr, nname, vname, adresse:adresse.aid) CREATE TABLE Kunde ( NUMERIC(13) PRIMARY KEY, Database Creates -- Adresse (aid, plz, ort, strasse, nummer) CREATE TABLE Adresse ( aid SERIAL PRIMARY KEY, plz SMALLINT NOT NULL, ort VARCHAR(40) NOT NULL, strasse VARCHAR(70) NOT NULL, nummer VARCHAR(20)

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 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

Entwicklungsumgebung für die Laborübung

Entwicklungsumgebung für die Laborübung Entwicklungsumgebung für die Laborübung VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung

Mehr

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

Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL

Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL Cursor Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL Cursor sind grob vergleichbar mit Iteratoren in modernen Programmiersprachen wie Java;

Mehr

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik Zugriff auf die Datenbank Ulf Leser Wissensmanagement in der Bioinformatik Wie komme ich an die Datenbank? Alternativen Alles in Java machen JDBC Treiber von Oracle herunterladen Java programmieren Java-basierte

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

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

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 05. Dez F. Wenzel, L. Rudenko Lösungsblatt 7

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 05. Dez F. Wenzel, L. Rudenko Lösungsblatt 7 Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 05. Dez. 2014 F. Wenzel, L. Rudenko Lösungsblatt 7 Aufgabe 1: JDBC 2.0 und Scrollable Result Sets Datenbanksysteme I Lösungen

Mehr

Mehr Performance mit JDBC JAVA-Anwendungen und die Oracle-Datenbank. Carsten Czarski Business Unit Database Oracle Deutschland GmbH

Mehr Performance mit JDBC JAVA-Anwendungen und die Oracle-Datenbank. Carsten Czarski Business Unit Database Oracle Deutschland GmbH Mehr Performance mit JDBC JAVA-Anwendungen und die Oracle-Datenbank Carsten Czarski Business Unit Database Oracle Deutschland GmbH Oracle JDBC Treiber Versionen Datenbank-Release J D B C 10.1.0 9.2.0 9.0.1

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 MySQL Workbench / HeidiSQL Kommandozeile Weitere?

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

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

1a) SQL Stored Procedure via IDs

1a) SQL Stored Procedure via IDs 1a) SQL Stored Procedure via IDs Erstellen Sie analog zu Aufgabe 2d) des ersten Übungsblatts eine SQL Stored Procedure, welche den Freundschaftsgrad zweier Benutzer eines sozialen Netzwerks aktualisiert.dazu

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

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

Isolationsstufen für Transaktionen. Dr. Karsten Tolle Isolationsstufen für Transaktionen Dr. Karsten Tolle Probleme bei Transaktionen Gewährleistung der Isolation Sperren kein Lost Update Read 1 (Accounts[13]) Read 2 (Accounts[13]) Write 2 (Accounts[13],101.000)

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

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

Exercises for the course Databases and Information Systems I WS 2006/2007 Special exercise JDBC

Exercises for the course Databases and Information Systems I WS 2006/2007 Special exercise JDBC Prof. Dr. Stefan Böttcher Exercises for the course Databases and Information Systems I WS 2006/2007 Special exercise JDBC 1. Preliminary configurations 1.1. Register ODBC database Chose Arbeitsplatz Systemsteuerung

Mehr

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

Transaktionen in Praxis. Dr. Karsten Tolle Vorl Transaktionen in Praxis Dr. Karsten Tolle Vorl. 13.06.2017 Probleme bei Transaktionen Lost Update und Inconsistent Retrieval Sichtweise vom Benutzer Auszug aus SQL 92 1) P1 ("Dirty read"): SQL-transaction

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

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

10 Anwendungsprogrammierung

10 Anwendungsprogrammierung 10 10 10.1 Programmiersprachenanbindung 10.2 10.3 PL/SQL 169 10 Teil X 0 Programmiersprachenanbindung 1 2 3 LINQ Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 1 Programmiersprachenanbindung

Mehr

Kapitel 11: Anwendungsentwicklung

Kapitel 11: Anwendungsentwicklung Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für ysteme Skript zur Vorlesung Wintersemester 2010/2011 Kapitel 11: Anwendungs Vorlesung: DP Dr. Matthias Schubert

Mehr

Praktikum Datenbanksysteme

Praktikum Datenbanksysteme Praktikum Datenbanksysteme Herbstsemester 2012 Dr. Andreas Geppert Platform Architecture Technology Infrastructure Services Credit Suisse geppert@acm.org Herbstsemester 2012 Slide 1 Themenübersicht konzeptueller

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

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

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

12. Programmierung in der Datenbank

12. Programmierung in der Datenbank 12. Programmierung in der Datenbank Motivation für Programme in der Datenbank Aufbau von serverseitigen Programmen Ausnahmebehandlung Erstellung von Triggern 305 Erweiterung relationaler Einbettung von

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

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 2013

Datenbanksysteme 2013 Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische

Mehr

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Schnellübersichten. SQL Grundlagen und Datenbankdesign Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes

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

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

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

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

Übung PL/SQL Trigger Lösungen

Übung PL/SQL Trigger Lösungen Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde

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

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC Übung Datenbanksysteme I G-3.1.09, Campus III Hasso Plattner Institut Motivation Grenzen von SQL 1. Bedingte Anweisungen Erhöhe das Gehalt eines Arbeitsnehmers um 2%, falls er eine Belobigung erhalten

Mehr

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

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

Mehr

Softwareentwicklung mit JAVA EE

Softwareentwicklung mit JAVA EE Softwareentwicklung mit JAVA EE Grundlagen: Datenbankprogrammierung Literatur T. Kudraß (Hrsg.): Taschenbuch Datenbanken, Hanser, 2007 DB-Programmierung-2 Einbettungstechniken Einbettung in 3GL Embedded

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

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

Üben von DDL und DML. Ergebnis:

Üben von DDL und DML.   Ergebnis: SQL DDL Üben von DDL und DML https://www.jdoodle.com/execute-sql-online Ergebnis: Befehlsgruppen in SQL DDL Data Definition Language DML Data Manipulation Language CREATE: Tabellen anlegen DROP: Tabellen

Mehr

Einbettung in SQL. Zwei Prinzipien: (1) Statische Einbettung

Einbettung in SQL. Zwei Prinzipien: (1) Statische Einbettung Einbettung in SQL Zwei Prinzipien: (1) Statische Einbettung - Vorübersetzer-Prinzip (Pre-Compiler) - In Programmcode integrierte SQL-Anweisungen werden durch den Precompiler übersetzt, d.h. in Prozeduraufrufe

Mehr

DBS: Anwendungsprogrammierung

DBS: Anwendungsprogrammierung Bisher: Grundlagen / Theorie DBS: Anwendungsprogrammierung Daten Schema Datenbank 1 Daten Schema Datenbank 2 DBMS Benutzer 1 Benutzer 2 Benutzer n Hier: Idee der Praxis Datenbanksysteme Benutzer Anwendungskontrollkomponenten

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

AG Datenbanken und Informationssysteme Wintersemester 2006 / 2007

AG Datenbanken und Informationssysteme Wintersemester 2006 / 2007 AG Datenbanken und Informationssysteme Wintersemester 2006 / 2007 Prof. Dr.-Ing. Dr. h. c. Theo Härder Fachbereich Informatik Technische Universität Kaiserslautern http://wwwdvs.informatik.uni-kl.de import

Mehr