Hauptschritte einer JDBC-App

Ähnliche Dokumente
Hauptschritte einer JDBC-App

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

JDBC. Java DataBase Connectivity

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

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

Willkommen. Datenbanken und Anbindung

Kapitel DB:VI (Fortsetzung)

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

Vorlesung Informatik II

Kapitel DB:VI (Fortsetzung)

Webbasierte Informationssysteme

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Webbasierte Informationssysteme

Oracle & Java HOW TO

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

Datenbank und Informationssysteme

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Tag 5 Inhaltsverzeichnis

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik

Tag 5 Inhaltsverzeichnis

Beispiel: DB-Mock (1/7)

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

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

vs. Fehler zur Übersetzungszeit

Client/Server-Programmierung

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

Java Database Connectivity. Gracin Denis, IB 4 C

Java und Datenbanksysteme Datenbankanbindung mit JDBC

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

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

PHP- Umgang mit Datenbanken (1)

Reflection. Arthur Zaczek. Nov 2014

11 Anwendungsprogrammierung

Java Database Connectivity-API (JDBC)

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

Klausur Datenbanken II

Datenbank Anbindung. Arthur Zaczek. Nov 2014

Java Database Connectivity-API (JDBC)

Anwendungsprogrammierung mit JDBC

Java Database Connectivity-API (JDBC)

6.9 Java Server Pages

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

Kurzübersicht JDBC. Marc Monecke. 15. Januar 2003

Internetanwendungstechnik (Übung)

Datenbank und Informationssysteme

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

Primitive Datentypen

Java-Datenbankzugriff mit JDBC

Datenbanken & Informationssysteme Übungen Teil 1

Wie kommen die Befehle zum DBMS

Oracle: Abstrakte Datentypen:

JDBC Datenzugriff aus Java ETIS SS04

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Verlagerung von Java-Anwendungen in die Datenbank (Teil I)

Enterprise java beans step-by-step

Datenbankzugriff mit JDBC

Properties und Proxies

Programmierkurs Java

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können!

Verbinde die Welten. Von Oracle auf MySQL zugreifen

Programmentwicklung ohne BlueJ

Praktikum Datenbanksysteme

MySQL mit MyLinux. 2/2003 Java unter Linux

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011.

FileMaker und Java...und es öffnen sich neue Welten!

Modifikation der Datenbank

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

6. Übung - Datenbankprogrammierung

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

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

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

JDBC (Stichworte) Udo Kelter

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

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

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Java-Schulung Grundlagen

Programmieren 2 Java Überblick

7.1.5 Java RMI Remote Method Invocation ( (

ODBC Was ist das? ODBC Treiber installieren ODBC-Zugriff einrichten ODBC Zugriff mit Excel ODBC Zugriff mit Word...

Themen. Web Service - Clients. Kommunikation zw. Web Services

Kapitel 5: Interfaces

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

AvO-Übung 5 Rechnerübung zu Ice

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Info B VL 14: Java Collections/Reflections

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

Kapitel 11: Anwendungsentwicklung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

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

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

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). 2

JDBC Driver (Types) 1.JDBC ODBC Bridge Benutzt ODBC Treiber, ODBC muss auf jeder client Maschine verfügbar sein. Die JDBC Aufrufe werden in ODBC Aufrufe umgewandelt (langsam). 2. native API partly Java driver Benutzt das API der jeweiligen Datenbank, die JDBC Aufrufe werden in API Aufrufe umgewandelt. 3.JDBC Net pure Java Driver Transformiert die JDBC Aufrufe in ein datenbankunabhängiges Netzprotokoll, das durch einen geeigneten Server dann interpretiert wird. Dieser Server wird auch Middleware genannt. 4.Native protocol pure Java Driver Transformiert die JDBC Aufrufe in ein von der Datenbank direkt unterstütztes Netzprotokoll. 3

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 Ggf. Pfad mit angeben, wo Sich die.jar Datei befindet export CLASSPATH=.:driverxyz.jar Der Classpath muss Das aktuelle Verzeichnis 4 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. 5

Benutzen des jdbc Driver Die Benutzung erfolgt über den Drivermanager durch Aufruf der Methode Drivermanager.getConnection import java.sql.*; (url,"user","password"); 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"); 6...

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%20sample %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. 7

//******************************************************** //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 8

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); } } 9

AddrB: Datenbank für Programmbeispiele + + + + + + + Field Type Null Key Default Extra + + + + + + + PersID int(11) PRI 0 Name varchar(39) YES FName varchar(30) YES Street varchar(39) YES ZIP varchar(12) YES Town varchar(30) YES Note varchar(30) YES LastUpdate timestamp(10) YES + + + + + + + TeleB: + + + + + + + Field Type Null Key Default Extra + + + + + + + PhoneID int(11) PRI 0 auto_increment PersID int(11) 0 Note varchar(30) YES Phone varchar(15) YES LastUpdate timestamp(10) YES + + + + + + + 10

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() ); 11

import java.sql.*; Beispiel 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();} 12 }

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'" 13

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

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 15 von next die erste Zeile.

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 16

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)... 17

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

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); 19

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 20