JDBC Datenzugriff aus Java ETIS SS04



Ähnliche Dokumente
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.

Praktikum Datenbanksysteme

Datenbank und Informationssysteme

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

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

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

11 Anwendungsprogrammierung

Wie kommen die Befehle zum DBMS

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

Oracle: Abstrakte Datentypen:

Datenbanken & Informationssysteme Übungen Teil 1

vs. Fehler zur Übersetzungszeit

3. Stored Procedures und PL/SQL

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

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

Gesicherte Prozeduren

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Klausur zur Vorlesung Datenbanksysteme I

Willkommen. Datenbanken und Anbindung

Beispiel: DB-Mock (1/7)

Verbinden von IBM Informix mit Openoffice mittels JDBC

Datenbankanwendungen (JDBC)

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

Datenbankzugriff mit JDBC

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

Anwenderdokumentation PersoSim

Prozessarchitektur einer Oracle-Instanz

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

Client/Server-Programmierung

Java: MySQL-Anbindung mit JDBC.

JDBC. Java DataBase Connectivity

Webbasierte Informationssysteme

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

OP-LOG

6.9 Java Server Pages

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

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

Tevalo Handbuch v 1.1 vom

Datenbanksysteme SS 2007

Artikel Schnittstelle über CSV

3. Klicken Sie im folgenden Fenster unbedingt auf "Installation fortsetzen", um die für das Update benötigten Treiber zu installieren.

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Tag 4 Inhaltsverzeichnis

SEMINAR Modifikation für die Nutzung des Community Builders

Synchronisations- Assistent

Verteidigung gegen SQL Injection Attacks

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

Updatehinweise für die Version forma 5.5.5

Installationshilfe VisKalk V5

QR-FUNKTION. Informationen über zu erledigende Aufgaben an das Reinigungspersonal senden.

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Wie wird ein Jahreswechsel (vorläufig und endgültig) ausgeführt?

Lehrveranstaltung Grundlagen von Datenbanken

Options- und Freitext-Modul Update-Anleitung

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Internet online Update (Internet Explorer)

Prozedurale Datenbank- Anwendungsprogrammierung

FlowFact Alle Versionen

SANDBOXIE konfigurieren

Starten der Software unter Windows XP

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen mit SQL Server-Daten

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Dokumentation zur Anlage eines JDBC Senders

TrekStor - ebook-reader TrekStor (TS) Edition - Firmware-Update

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

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

2. Datenbank-Programmierung

Dealer Management Systeme. Bedienungsanleitung. Freicon Software Logistik (FSL) für Updates

Einrichtung eines Zugangs mit einer HBCI-Chipkarte bei der Commerzbank

4D Server v12 64-bit Version BETA VERSION

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

Lokale Installation von DotNetNuke 4 ohne IIS

Hochschule Karlsruhe Technik und Wirtschaft

Handbuch ZfEditor Stand

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

Starten der Software unter Windows 7

Java Database Connectivity-API (JDBC)

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2

Leichte-Sprache-Bilder

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

ORA.LogMiner. Nach Bestelleingang erhalten Sie eine Rechnung mit ausgewiesener Mehrwertsteuer und Informationen über die Zahlungsweise.

Informatik 12 Datenbanken SQL-Einführung

estos UCServer Multiline TAPI Driver

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Backup der Progress Datenbank

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Direct Access Suite. Dokumentation

Transkript:

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, Flat Files, Spread Sheets Bestandteil Java-Standarddistribution seit JDK 1.1 aktuell: Version 3.0 JDBC keine Abkürzung inoffiziell: Java Database Connectivity einfacher Zugriff aus Java auf Datenquellen plattform- und datenbankunabhängig write once run anywhere JDBC 3

Motivation (II) unterschiedliche DBS besitzen unterschiedliche Programmierschnittstellen somit: schwer, DBMS-unabhängige Anwendungen zu entwickeln Probleme bei Portierung auf andere DBMS deshalb: JDBC entwickelt somit: selber Quellcode für Kommunikation mit beliebiger DB (Voraussetzung: JDBC-Treiber und ANSI SQL-2 Fähigkeit der DB) JDBC 4

Bestandteile (I) Klassen und Schnittstellen des package java.sql bzw. javax.sql DriverManager Einstiegspunkt, hält Liste registrierter Treiberklassen versucht Treiber zu lokalisieren + DB-Verbindung aufzubauen DataSource repräsentiert Datenquelle in Java Alternative zum DriverManager arbeitet mit JNDI (Features wie Connection Pooling, verteilte Transaktionen + Wartbarkeit verbessert) JDBC 5

Bestandteile(II) Connection repräsentiert Verbindung zu Datenquelle beinhaltet auszuführende SQL-Statements + zurückgegebene Ergebnisse eine Anwendung kann eine oder mehrere Verbindungen zu einer oder mehreren Datenquellen haben JDBC 6

Bestandteile(II) Statement ermöglicht Ausführung von SQL-Anweisungen über gegebene Verbindung ResultSet verwaltet Ergebnisse einer Anfrage unterstützt Zugriff auf einzelne Spalten JDBC 7

Treibermanager führt Liste mit allen geladenen Treibern alle Verbindungen vom Programm zur Datenbank laufen über ihn Treiber aufgrund Verbindungsinformationen gewählt registrierte Treiber entsprechend ihrer Reihenfolge getestet erster passender ausgewählt Treiberkonzept bewirkt Flexibilität von JDBC JDBC 8

Treiber Treiber Schnittstelle zwischen JDBC und DB Austausch Treiber ermöglicht Zugriff auf andere DB mit selben Quellen d.h. jedes DBMS benötigt eigenen Treiber explizites Laden im Programm: Class.forName( jdbc.odbc.jdbcodbcdriver ); Java-Classloader lokalisiert Treiber und lädt und linkt ihn automatisch danach registriert sich Treiber selbständig beim Treibermanager JDBC 9

Connection (I) repräsentiert Verbindung zur Datenbank Verbindungsaufbau: Connection con = DriverManager.getConnection( String url, String name, String passwort); Url: jdbc:<subprotocol>:<subname> Ablauf JDBC-DB-Anwendung: Verbindungsaufbau zur DB SQL-Anweisung senden Anfrageergebnisse verarbeiten JDBC 10

Connection (II) Connection Pooling (seit 2.0) da Connectionaufbau teure Operation Reduzierung Verbindungsauf- und -abbau wenn DB-Verbindung geschlossen, nicht beendet, sondern markiert will andere Anwendung Verbindung öffnen, Prüfung, ob passende Verbindung in Pool - nur wenn nein, neue aufgebaut JDBC 11

Statement + ResultSet Statement stmt = connection.createstatement(); ResultSet rs = stmt.executequery( select... ); while(rs.next()){ System.out.println(rs.getString( name )); } rs.close(); stmt.close(); JDBC 12

Statement (I) Drei Arten für Ausführung von SQL (Interfaces bauen aufeinander auf): Statement: einfacher SQL-Befehl PreparedStatement: vorkompilierter SQL-Befehl CallableStatement: Aufruf einer Prozedur Methoden für Abfragen von Ergebnissen: createquery (Anfragen) createupdate (Einfügen, Ändern, Löschen sowie DDL- Anweisungen) seit 2.0: BatchUpdates (Ausführung mehrerer Updates als Stapel - Performancegewinn) JDBC 13

Statement (II) Methoden für Ausführen von Statements: executequery (Anfragen) executeupdate (Änderungsoperation + DDL-Befehle) execute (mehr als ein ResultSet oder update count zurückgegeben) Escape Syntax ermöglicht mehr DB-Unabhängigkeit Connections, Statements, ResultSets immer explizit schliessen, um Ressourcen so früh wie möglich frei zu geben JDBC 14

PreparedStatement(I) PreparedStatement pstmt = con.preparestatement( select * from person where name =? and vorname =? ); pstmt.setstring(1, Lustig ); pstmt.setstring(2, Peter ); ResultSet rs = rs.executequery(); JDBC 15

PreparedStatement (II) Zeichenkette mit SQL-Anweisung bei Erzeugung des Objektes zu DBMS gesendet, dort kompiliert und zur Ausführung vorbereitet Parameter unbekannt, wenn Statement kreiert? Platzhalter für Parameter für endgültige Ausführung: IN-Parameter übergeben Parameter gültig bis Aufruf clearparameter oder neu gesetzt Laufzeitvorteile, wenn Anweisung mehrfach mit verschiedenen Parametern ausgeführt JDBC 16

ResultSet (I) Java-Objekt, das Ergebnisse einer Anfrage enthält Anfrageergebnisse haben Tabellenform (besitzen Zeilen und Spalten) Ergebnisse durch getter abfragbar ResultSet hat Cursor steht zunächst vor 1. Tupel gültig bis ResultSet oder Statement geschlossen mit next() vorwärts seit 2.0: Scrollbare ResultSets (vor-, rückwärts durchlaufen + zu bestimmter Stelle springen) JDBC 17

ResultSet (II) weitere Neuerungen 2.0 Datenänderungen noch nach Öffnen des ResultSets aktualisiert änderbare ResultSets, d.h. Tupel der Ergebnismenge in ResultSet und Datenbank änderbar SQL99-Datentypen (benutzerdefinierte Typen, BLOB, ARRAY...) JDBC 18

Fehlerbehandlung Problem: DBMS nutzen z.t. alten oder propritären SQL-Syntax Lösung: JDBC kontrolliert nicht, ob Anfrage richtig, Nutzer kann jegliche DBMS-Funktionalität nutzen wenn Anfrage falsch von DB Fehler erzeugt auch Fehler bei Verbindungsproblemen, DBMS- oder Hardwarefehlern Fehler als Exceptions signalisiert mit try und catch abfangen Exception bedeutet nicht unbedingt, dass Methode nicht ausgeführt besser explizit zurücksetzen JDBC 19

Metadaten DBMS haben unterschiedliche Feature, Datentypen Metadaten informieren über die Datenbank DB-Schema, SQL-Dialekt, implementierte Operationen java.sql.databasemetadata: Informationen zur Struktur DB oder DBMS dmd.geturl(); Anfrage zur Laufzeit vom Nutzer eingegeben, Informationen über ResultSet nötig Schnittstelle java.sql.resultsetmetadata: Informationen zur Struktur des ResultSet rs.getcolumncount(); JDBC 20

Zusammenfassung Standard für DB-Zugriff aus Java plattform- und datenbankunabhängig grundlegende Feature einfach, schnell erlernbar vor 3.0 hauptsächlich grundlegende Möglichkeiten zum Zugriff von Javaprogrammen auf Datenbanken ab 3.0 DB-Zugriff aus Application Server Schicht (Connection-Pooling-Konfiguration) viele neue Eigenschaften (ab 2.0) optional und müssen nicht von JDBC-Treibern unterstützt werden alte Treiber weiter nutzbar JDBC 21

Literatur Saake, G., Sattler, K.: Datenbanken & Java: JDBC, SQLJ und ODMG dpunkt.verlag, Heidelberg, Mai 2000. http://java.sun.com/products/jdbc/ http://java.seite.net/jdbc/treiber.html http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstar t/gettingstartedtoc.fm.html Jansen, R.: Tuning-Center, Java Magazin,7/2003, S.80: Neuerungen aus JDBC 3.0 am Beispiel der Oracle-Datenbank JDBC 22

Transaktionen i.d.r. Verbindungen im autocommit-modus gestartet (einzelnes Statement sofortige Auswirkung auf Datenbank) mehrere Operationen zusammenfassen: connection.setautocommit(false); so: Änderungen zu beliebigen Zeitpunkt dauerhaft in DB geschrieben (commit()) oder Änderungen aktueller Transaktion rückgängig gemacht (rollback()) JDBC 23

Neuerungen in JDBC 3.0 im Vordergrund DB-Zugriff aus Application Server Schicht Connection-Pooling-Konfiguration Savepoints Wiederverwendung von Prepared Statements Zugriff auf automatisch generierte Schlüssel Zugriff auf Metainformtionen von Statement- Parametern Verbesserungen bei Result-Sets JDBC 24