Hauptschritte einer JDBC-App

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

JDBC. Allgemeines ODBC. java.sql. Beispiele

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

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Beispiel: DB-Mock (1/7)

Übung: Verwendung von Java-Threads

Datenbank und Informationssysteme

JDBC. Java DataBase Connectivity

Oracle: Abstrakte Datentypen:

Programmierkurs Java

Datenbanken & Informationssysteme Übungen Teil 1

Java: Vererbung. Teil 3: super()

Kapitel DB:VI (Fortsetzung)

Programmieren in Java

Gesicherte Prozeduren

Willkommen. Datenbanken und Anbindung

Verbinden von IBM Informix mit Openoffice mittels JDBC

Einführung in die Programmierung

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

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

Datenbanken auf Sybase SQL-Anywhere

MailUtilities: Remote Deployment - Einführung

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Grundlagen von Python

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

Enterprise java beans step-by-step

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

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

Java Einführung Collections

Backup der Progress Datenbank

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

Übungsblatt 3: Algorithmen in Java & Grammatiken

Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

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

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

OFFLINE SYNCHRONISATION - ENIQ ACCESSMANAGEMENT PROGRAMMIER-CLIENT (ENIQ DEVICEMANAGEMENT) EINRICHTEN INSTALLATION DER SQL SERVER INSTANZ

6.9 Java Server Pages

Planung für Organisation und Technik

WebService in Java SE und EE

Kurzanleitung zu XML2DB

Windows 7 Winbuilder USB Stick

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

3. Stored Procedures und PL/SQL

OP-LOG

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

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

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

ODBC-Treiber Programmübersicht

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Einführung in die Informatik Tools

Objektorientierte Programmierung. Kapitel 12: Interfaces

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Import und Export von Übergängern

desk.modul : WaWi- Export

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Typumwandlungen bei Referenztypen

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

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Anleitung zur Installation des AP-Manager-II

Kurzanleitung zur Erweiterung der htdig

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Installation OMNIKEY 3121 USB

Innere Klassen in Java

Prozessbeschreibung. Qualitätsberichte erstellen und vorbefüllen

Hinweise zur Installation von MySQL

Applet Firewall und Freigabe der Objekte

KURZANLEITUNG MSDAS DMS SYSTEM - SILVERDAT II SCHNITTSTELLE

Wie richten Sie Ihr Web Paket bei Netpage24 ein

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, Spur Spur Spur Spur

Artikel Schnittstelle über CSV

SSH Authentifizierung über Public Key

Publizieren von Webs mit SmartFTP

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Installation Hardlockserver-Dongle

NTCS ÜBRNAHME AUF NEUEN SERVER. 15/06/25 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Konfiguration Datenbank-Parameter

Installationsanleitung DIALOGMANAGER

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

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

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

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Anleitung zur Webservice Entwicklung unter Eclipse

Python SVN-Revision 12

Lehrveranstaltung Grundlagen von Datenbanken

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 Staement 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 export CLASSPATH=.:driverxyz.jar Ggf. Pfad mit angeben, wo Sich die.jar Datei befindet 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. 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 dzur 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