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



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

Datenbanken & Informationssysteme Übungen Teil 1

Datenbank und Informationssysteme

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

3. Stored Procedures und PL/SQL

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

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

Gesicherte Prozeduren

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

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

Java Database Connectivity-API (JDBC)

JDBC. Allgemeines ODBC. java.sql. Beispiele

Datenbankanwendungen (JDBC)

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

Oracle: Abstrakte Datentypen:

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java.

CVR Seniorentreff vom 04. und Serienbriefe/Seriendruck. Serienbriefe / Seriendruck

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

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Dokumentation zur Anlage eines JDBC Senders

2. Datenbank-Programmierung

Java und Datenbanken

OP-LOG

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Praktikum Datenbanksysteme

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Prozessbeschreibung. Qualitätsberichte erstellen und vorbefüllen

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

Professionelle Seminare im Bereich MS-Office

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

desk.modul : WaWi- Export

Software Engineering Klassendiagramme Assoziationen

Speichern. Speichern unter

Datenbank und Informationssysteme

Übungen Programmieren 1 Felix Rohrer. Übungen

Qt-Projekte mit Visual Studio 2005

Der Kalender im ipad

Java: Vererbung. Teil 3: super()

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

Kurzeinführung Excel2App. Version 1.0.0

Wie richten Sie Ihr Web Paket bei Netpage24 ein

News & RSS. Einleitung: Nachrichten er-(veröffentlichen) und bereitstellen Nachrichten erstellen und bereitstellen

ErstWeb.doc Seite: 1

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Kleines Handbuch zur Fotogalerie der Pixel AG

TeamSpeak3 Einrichten

Datenbanken Kapitel 2

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Klicken Sie auf Weiter und es erscheint folgender Dialog

Anleitung Grundsetup C3 Mail & SMS Gateway V

Erstellen einer in OWA (Outlook Web App)

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Client/Server-Programmierung

Kulturobjekte der Donau Das ContentManagementSystem (CMS)

VDP-Start die Hilfe für Anfänger

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

3. auf Symbol klicken erstellt von Erika Völkel

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Stapelverarbeitung Teil 1

Dokumentation Typo3. tt - news - Nachrichtenmodul

DOKUMENTATION VOGELZUCHT 2015 PLUS

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Handbuch B4000+ Preset Manager

teischl.com Software Design & Services e.u. office@teischl.com

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Installation des edu- sharing Plug- Ins für Moodle

Lizenz-Server überwachen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Umstellung einer bestehenden T-Online Mailadresse auf eine kostenlose T-Online Fre -Adresse

Klausur zur Vorlesung Datenbanksysteme I

Erstellen einer digitalen Signatur für Adobe-Formulare

Fachhochschule Deggendorf Platzziffer:...

ELO Print&Archive so nutzen Sie es richtig

Access Verbrecherdatenbank Teil 3

Quiz mit Google Docs erstellen

Wie kommen die Befehle zum DBMS

MailUtilities: Remote Deployment - Einführung

Installationshinweise und Systemvoraussetzungen

Fallbeispiel: Eintragen einer Behandlung

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Artikel Schnittstelle über CSV

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

DB2 Kurzeinführung (Windows)

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Erstellen von x-y-diagrammen in OpenOffice.calc

! " # $ " % & Nicki Wruck worldwidewruck

Contao für Redakteure

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Folgende Fremdsprachen stehen für die Übersetzung zur Verfügung:

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

Transkript:

Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015

Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines JDBC-Programms Überblick über das Package java.sql Parametrisierte Anweisungen Metadaten Ändernde Anweisungen Änderungen über einen Cursor Arbeiten mit Transaktionen Einstellen des Isolationslevels

Überblick über das Package java.sql Fragestellung BuchAusgabe.java Datenbank Bücher String Autor = Moore ; String Titel = Schwarzrock ; System.out.println( Autor + : + Titel); Autor Moore............ Titel Schwarzrock Wie kommen Werte aus der Datenbank in die Variablen unserer Anwendungen? Wie können wir Werte in unserem Programm in der Datenbank speichern?

Überblick über das Package java.sql Varianten der Zugriffstechnik SLI Statement Level Interface Einbettung von SQL-Anweisungen in den Programmcode Verarbeitung durch einen Präprozessor Beispiele: embedded SQL in C (esql/c), SQLJ CLI Call Level Interface Bibliothek mit Funktionen bzw. Klassen und Methoden für den Zugriff auf das DBMS Beispiele: ODBC (C/C++), JDBC (Java), ADO.NET (C#)

Überblick über das Package java.sql SQL als Sprache für den Datenbankzugriff Gleichzeitiger Zugriff auf mehrere DBMS bzw. Datenbanken Adaptives Programmiermodell Einfachheit ( Keep it simple ) Robustheit, Verfügbarkeit, Skalierbarkeit Grundlage für andere Zugriffstechniken wie SQLJ oder JPA (Java Persistence API)

Überblick über das Package java.sql Architektur Java-Programm JDBC-API R JDBC JDBC-Treibermanager JDBC-Treiber-API R JDBC-Treiber DBMS Daten

Überblick über das Package java.sql Typen von JDBC-Treibern

Überblick über das Package java.sql Beispiel BuchJDBC.java in IntelliJ Einbinden des JDBC-Treibers, hier: JDBC-Treiber für PostgreSQL Schritt 1: JDBC-Treiber laden Schritt 2: Verbindung zum DBMS und zur Datenbank herstellen Schritt 3: Objekt für SQL-Anweisung erzeugen Schritt 4: DBMS Anweisung direkt ausführen lassen Schritt 5: Ergebnis anzeigen durch Iteration über den Cursor auf die Ergebnismenge Schritt 6: Fehler abfangen und Ressourcen freigeben

Überblick über das Package java.sql Interfaces und Klassen von JDBC Connection createstatement preparestatement preparecall Statement subclasses PreparedStatement subclasses CallableStatement Input to PreparedStatement Input/Output of CallableStatement executequery executequery Data types getxxx executequery getmoreresults / getresultset Quelle: JDBC-Spezifikation ResultSet

Parametrisierte Anweisungen Metadaten Übersicht Architektur von JDBC Grundstruktur eines JDBC-Programms Überblick über das Package java.sql Parametrisierte Anweisungen Metadaten Ändernde Anweisungen Änderungen über einen Cursor Arbeiten mit Transaktionen Einstellen des Isolationslevels

Parametrisierte Anweisungen Metadaten Arten von Statements Statement wird vom DBMS übersetzt, optimiert und ausgeführt PreparedStatement zweistufiges Verfahren Schritt 1: DBMS übersetzt und optimiert Schritt 2: Anweisung kann mehrfach mit immer neuen Parametern ausgeführt werden CallableStatement zum Aufruf von Stored Procedures

Parametrisierte Anweisungen Metadaten Beispiel einer parametrisierten Anweisung Wir möchten Bücher bestimmter Autoren suchen, siehe BuchSuche.java Parametrisierte Anweisungen verwenden Platzhalter Zuerst wird im DBMS der Zugriffsplan erstellt In der Schleife wird derselbe Zugriffsplan immer wieder aufgerufen

Parametrisierte Anweisungen Metadaten SQL-Injection Implementierung der Suche nach Büchern ohne Platzhalter, siehe BuchInjection.java Auf den ersten Blick erfüllt es dieselbe Funktionalität Aber: der Inhalt der Benutzereingabe wird vom DBMS interpretiert Deshalb ist SQL-Injection möglich Demo: Neue Tabelle demo mit einem Feld msg anlegen Einen Datensatz einfügen Angriff: Der Angreifer möchte die Tabelle demo löschen Was muss er eingeben? Diskussion

Parametrisierte Anweisungen Metadaten Ermitteln der Metadaten zu einer Ergebnismenge Interface ResultSetMetaData mit den Methoden: getcolumncount() getcolumnname(int column) getcolumntype(int column)

Parametrisierte Anweisungen Metadaten DatabaseMetaData Informationen über das DBMS und die Datenbank erhält man via das Interface DatabaseMetaData, zum Beispiel: getdatabaseproductname() getdrivername() gettables(...) getcolumns(...) supportsansi92fullsql()... unzählige Informationsfunktionen

Ändernde Anweisungen Änderungen über einen Cursor Übersicht Architektur von JDBC Grundstruktur eines JDBC-Programms Überblick über das Package java.sql Parametrisierte Anweisungen Metadaten Ändernde Anweisungen Änderungen über einen Cursor Arbeiten mit Transaktionen Einstellen des Isolationslevels

Ändernde Anweisungen Änderungen über einen Cursor Ändernde Anweisungen executequery für select... gibt ein Objekt vom Typ ResultSet zurück executeupdate Methode von Statement für update... oder insert... gibt die Zahl der betroffenen Zeilen zurück Was tun, wenn man den Typ der Anweisung zur Compile-Zeit nicht kennt? execute Methode von Statement für beliebige Anweisungen gibt einen boolschen Wert zurück: true bedeutet, dass eine Ergebnismenge erstellt wurde, kann man abholen mit getresultset false bedeutet, dass Daten geändert wurden, die Zahl der geänderten Zeilen kann man abholen mit getupdatecount

Ändernde Anweisungen Änderungen über einen Cursor Arten von ResultSets Art der Bewegung des Cursors TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE Lesender oder ändernder Cursor CONCUR_READ_ONLY CONCUR_UPDATABLE

Ändernde Anweisungen Änderungen über einen Cursor Navigieren in ResultSets next() previous() first() last() beforefirst() afterlast() relative(int rows) absolute(int r)

Ändernde Anweisungen Änderungen über einen Cursor Cursor verwenden in ResultSets Werte lesen rs.getstring(1) rs.getstring("author") Werte ändern auf den entsprechenden Datensatz navigieren rs.updatestring("author", "Geänderter Autor") rs.updaterow() Datensätze einfügen rs.movetoinsertrow() rs.updatestring("author", "Neuer Autor") rs.updatestring("title", "Neuer Titel")... rs.insertrow()

Arbeiten mit Transaktionen Einstellen des Isolationslevels Übersicht Architektur von JDBC Grundstruktur eines JDBC-Programms Überblick über das Package java.sql Parametrisierte Anweisungen Metadaten Ändernde Anweisungen Änderungen über einen Cursor Arbeiten mit Transaktionen Einstellen des Isolationslevels

Arbeiten mit Transaktionen Einstellen des Isolationslevels Auto-Commit-Modus Auto-Commit-Modus = Jede einzelne SQL-Anweisung wird automatisch in einer Transaktion durchgeführt, also automatisch bestätigt Für welche Art von Anwendungen ist der Auto-Commit-Modus nicht geeignet? Ausschalten des Auto-Commit-Modus: con.setautocommit( false ) Nun muss man im Programm das Transaktionsende bestätigen oder ein Rollback veranlassen: con.commit() con.rollback()

Arbeiten mit Transaktionen Einstellen des Isolationslevels Blaupause für Transaktionen boolean autocommit = con.getautocommit(); Statement stmt; try { con.setautocommit( false ); stmt = con.createstatement(); stmt.execute(...); stmt.execute(...); stmt.execute(...);... con.commit(); } catch(sqlexception sqle) { con.rollback(); } finally { stmt.close(); con.setautocommit( autocommit ); }

Arbeiten mit Transaktionen Einstellen des Isolationslevels Isolationslevel in JDBC Im Interface Connection werden die Isolationslevel definiert: TRANSACTION_NONE TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED (Default in JDBC) TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE Einstellen durch con.settransactionisolation( int Level ) Das eingestellte Level gilt dann für alle folgenden Transaktionen, bis es umgestellt wird