JDBC Java DataBase Connectivity

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

der Universität Oldenburg
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Internet-Datenbanken
Objektorientierte Programmierung
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Ausnahmen HS Merseburg (FH) WS 06/07.
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Threads Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Dynamische Webseiten Java servlets.
Datenbankanwendungen mit Java und JDBC
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
JDBC Konzepte Realisierung von Zugriffen
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
JDBC: JAVA Database Connectivity
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
ODBC (Open Database Connectivity)
Wir bauen uns eine Webapplikation!
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
JDBC (Java DataBase Connectivity)
Optimale Ursprungsgerade
Datenbankanbindung mit
Programmiervorkurs WS 2014/15 Methoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java-Kurs Übung Besprechung der Hausaufgabe
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
JDBC – Datenzugriff aus Java
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Java Programme nur ein bisschen objektorientiert.
© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.
Wie überwacht man Objekte im "Alltag" ?
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Dynamisches Laden von Klassen
Grundkurs Informatik 11-13
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
«Delegierter» Methoden Schablone Funktionszeiger
Tutorstunde 10.
Implementieren von Klassen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
 Präsentation transkript:

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, die Klasse driver.class implementiert die Interfaces von java.sql.

Hauptschritte einer JDBC-App Laden und registrieren eines JDBC-Drivers, passend zum Datenbankserver (zB. mysql) Connection object vom Drivermanager erzeugen lassen, dazu Logindaten und URL übergeben. Mit Hilfe der Connection ein oder mehrere Statement Objekte erzeugen. Sql Arbeitsschritt mit Statement und Querystring zur Ausführung bringen, Ergebnis ist ein int-Wert oder ein Resultset. Beenden mit Schließen der Connection (close).

JDBC Driver (Types)

Bereitstellen des Treibers Meist liegt der Treiber in Form eines jar-Files vor. Nutzung der java-Option -cp (-classpath) oder Setzen der Umgebungsvariable CLASSPATH um das Teiberpackage nutzen zu können javac -cp .:driverxyz.jar myapp.java java -cp .:driverxyz.jar myapp Oder export CLASSPATH=.:driverxyz.jar Ggf. Pfad mit angeben, wo Sich die .jar Datei befindet Der Classpath muss Das aktuelle Verzeichnis enthalten

Laden des Treibers Einkompilieren des Treibers (eher unüblich) org.gjt.mm.mysql.Driver x= new org.gjt.mm.mysql.Driver(); Laden des Treibers zur Laufzeit (üblich) Class.forName("org.gjt.mm.mysql.Driver"); Erklärung: mit Hilfe der statischen Methode forName der Klasse Class ist es möglich, in ein laufendes Javaprogramm Klassen zu (nachzu-) laden.

Benutzen des jdbc Driver Die Benutzung erfolgt über den Drivermanager durch Aufruf der Methode Drivermanager.getConnection (url,"user","password"); import java.sql.*; public class jdbcTest { public static void main(String args[]) Connection con; try Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost:3306/ADDR"; con = DriverManager.getConnection(url,"beck","spass"); . . .

Packagestruktur kann aus der Doku oder dem jar-File ermittelt werden (jar tvf myLovelyJarFile.jar). Protokoll der URL aus Doku oder Beispielprogrammen ermitteln.(http://www.developer.com/article.php/3417381#Discussion%20and%20S ample%20Programs) Bei der Variante des Ladens des Driver über Class.forName stellt sich dem aufmerksamen Betrachter die Frage, woher kommt die Instanz des Drivers und wie erhält der Drivermanager Kenntis von selbiger? Um dieses Rätsel zu lösen, hilft ein Blick in die Quellen eines jdbc Drivers.

//******************************************************** //The Driver class is internally known as jdbcMysqlDriver. public final class jdbcMysqlDriver implements Driver { /** Self instantiation */ static { new jdbcMysqlDriver(); } /** Keep track of connections, just in case we are interested. */ static Vector connections; /** Locate defaults */ static jdbcMysqlBase mysql; Statischer Initialisierer, wird automatisch nach dem Laden der Klasse aufgerufen. Instanziert den Driver

Das Registrieren des Drivers erfolgt nun im Constructor public jdbcMysqlDriver() { this.connections = new Vector(); this.mysql = new jdbcMysqlBase(this); try DriverManager.registerDriver(this); } catch(SQLException se) System.out.println( "Error registering twz1.jdbc.mysql Driver\n" + se);

Datenbank für Programmbeispiele

Test der Connection Ermitteln von Metadaten zur Datenbank, ist dies erfolgreich, scheint die Verbindung zum DBMS und zur Datenbank ok. DatabaseMetaData dmd=con.getMetaData(); Nun kann man mit dem DMS schon kommunizieren: System.out.println("URL: "+dmd.getURL()); System.out.println("Product: " +dmd.getDatabaseProductName()+" Vers." +dmd.getDatabaseProductVersion() ); System.out.println("Driver : " +dmd.getDriverName()+" Vers." +dmd.getDriverVersion() );

Beispiel import java.sql.*; public class jdbcTest { public static void main(String args[]) Connection con; ResultSet Rs; try Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost:3306/ADDR"; System.out.println("Driver:"+DriverManager.getDriver(url)); con = DriverManager.getConnection(url,"beck","spass"); DatabaseMetaData dmd=con.getMetaData(); if (con!=null) System.out.println("URL: "+dmd.getURL()); System.out.println(„Product: "+dmd.getDatabaseProductName() +" Vers."+dmd.getDatabaseProductVersion() ); System.out.println("Driver : "+dmd.getDriverName() +" Vers."+dmd.getDriverVersion() ); } catch(Exception e){System.out.println(e);e.printStackTrace();} Beispiel

Kommunikation mit Datenbanken Zur Kommunikation wird SQL genutzt, ggf. im Dialekt des verwendeten DBMSs. Prinzipiell wird zwischen zwei Arten von SQL- Statements unterschieden. Statements, die einen ganzzahligen Wert liefern Statements, die ein Resultset liefern Um SQL-Statements absetzen zu können, bedarf es eines Objektes der Klasse Statement: Statement stmnt=con.createStatement(); In einem QueryString, wird das SQL-Statement formuliert: String Query="Select * from AddrB where Town='Buschhausen'"

execute Die Klasse Statement stellt mehrere execute... Methoden bereit, die wichtigsten sind: executeQuery ResultSet executeQuery(String sql); executeUpdate int executeUpdate(String sql); Entsprechend des zu erwartendes Ergebnisses ist die Methode executeUpdate oder executeQuery aufzurufen.

Resultset Liefern SQL-Statements eine Liste von Ergebnissen, so werden diese in Form eines ResultSet zurückgegeben. Das ResultSet enthält in Form einer Tabelle die Resultate einer Datenbankanfrage. Die Zeilen werden über einen „Cursor“ adressiert. In Java navigiert man mit den Methode next, previous, relative oder absolute. Die erste Zeile hat dabei den Index 1! Typischerweise navigiert man sequenziell durch das ResultSet mit next, dabei indiziert der erste Aufruf von next die erste Zeile.

Die Indizierung der Spalten beginnt mit ebenfalls mit 1! Rs=stmnt.executeQuery(Query); while(Rs.next()) { System.out.printf("%-10s %-10s %-15s %05d,%s\n", Rs.getString(2), Rs.getString(3), Rs.getString(4), Rs.getInt(5), Rs.getString(6)); } Auf die Spalten des Resultset wird über spezielle Methoden zugegriffen (getInt, getString,...), je nach zu erwartendem Wert. Die Indizierung der Spalten beginnt mit ebenfalls mit 1! Anstelle des Spaltenindex kann auch der Spaltenname als String angegeben werden

Verwendung von JDBC-ODBC import java.net.URL; import java.sql.*; class JDBCTest { Connection con=null; void doConnect() try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection( "jdbc:odbc:sybase_132_28", "sxxxx","s0xxxx"); if (con!=null) . . .

Verwendung Sybase-Treiber Ein jdbc driver befindet sich im Verzeichnis: /glb/jdbcSybase Classpath: Linux: export CLASSPATH=.:./jconn2.jar Windows: set CLASSPATH=.:./jconn2.jar Alternativ Angabe des Classpath als Option: javac -cp .:/glb/jdbcSybase/jconn2.jar xxx.java java -cp .:./glb/jdbcSybase/jconn2.jar xxx Der Treiber kann auch in das Arbeitsverzeichnis kopiert werden, dann entfällt die Angabe des Pfades.

Laden des jdbc drivers: Class.forName("com.sybase.jdbc2.jdbc.SybDriver"); URL zum Aufbau der Connection: String theURL = "jdbc:sybase:Tds:iaix2.informatik.htw-dresden.de:5500"; Aufbau der Connection: con = DriverManager.getConnection (theURL,sxxxxx,sxxxxx);

MS Sql die Daten zum MS SQL-Server: Server: 141.56.2.45 Port: 1433 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //Class.forName("org.gjt.mm.mysql.Driver"); String url= "jdbc:sqlserver://141.56.2.45:1433;databaseName=privbeck;"; //String url = "jdbc:mysql://localhost:3306/ADDR"; System.out.println("Driver:"+DriverManager.getDriver(url)); con = DriverManager.getConnection(url,"beck","spass"); DatabaseMetaData dmd=con.getMetaData(); Instanz: MSSQL2012 wird nicht angegeben JDBC-Treiber: https://msdn.microsoft.com/de-de/library/mt484311%28v=sql.110%29.aspx Informationen zum Erstellen des Verbindungsstrings finden Sie hier: https://msdn.microsoft.com/de-de/library/ms378428%28v=sql.110%29.aspx