Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun...

18
Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek, die es ermöglicht, mit Java auf relationale Datenbanken zuzugreifen Datenbanken spielen in unserer Informationsgesellschaft eine ausserordentlich grosse Rolle. Immer grössere Bedeutung hat der Zugriff auf Datenbanken über Netze auf TCP/IP-Basis. Programmieren mit JDBC ist ein wichtiger Anwendungsbereich der Java-Programmierung. Inhalt der Kapitels Relationale Datenbanken Server-Datenbanken mit MySQL Zugriff auf Serverdatenbanken mit JDBC Programmieren mit JDBC Java-Applikation JDBC JD BC -Treiber D atenbank Server

Transcript of Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun...

Page 1: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

JDBC (Java DataBase Connectivity)

Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek, die es ermöglicht, mit Java auf relationale Datenbanken zuzugreifen

Datenbanken spielen in unserer Informationsgesellschaft eine ausserordentlich grosse Rolle. Immer grössere Bedeutung hat der Zugriff auf Datenbanken über Netze auf TCP/IP-Basis.Programmieren mit JDBC ist ein wichtiger Anwendungsbereichder Java-Programmierung.

Inhalt der Kapitels

• Relationale Datenbanken

• Server-Datenbanken mit MySQL

• Zugriff auf Serverdatenbanken mit JDBC

• Programmieren mit JDBC

Java-Applikation

JDBC

JDBC-Treiber

Datenbank

Server

Page 2: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Relationale Datenbanken

Client 1

Client 2

Client 3

DBMS

Data

SQL-Statement

Result set

DBMS (DataBase Management System)

• Werkzeuge zur Strukturierung und Manipulation der Daten• Funktionen zur Eingabe, Veränderung, Suchen und Ausgabe der Daten • Hilfsmittel zur Sicherung, Wiederherstellung und Schützen von Daten.

DBMS ist in der Regel auf einem Datenbankserver installiert, Clients greifen über ein Netzwerk zu. Ein DBMS kann mehrere Datenbanken verwalten.

Zum Schutz der Daten müssen sich Clients authentifizieren (user, password).

Relationale Datenbanken

Page 3: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Tabellen

Anschaulich werden Relationen als Tabellen dargestellt, deren Zeilen Datensätze (records) enthalten, die die Informationsobjekte repräsentieren. Die Spalten genannt Felder (fields), repräsentieren die Eigenschaften (Attribute) dieser Objekte.

• Attribute sind fest definiert• identische Zeilen sind nicht erlaubt• Reihenfolge der Zeilen bzw. Spalten ist beliebig.

Page 4: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Was bedeutet "relational" ?

Bsp: Eine Universität erfasst alle Veranstaltungen in einer Tabelle:

Nachteile: Datenredundanz (gleiche Daten werden mehrmals gespeichert)Dateninkonsistenz (verschiedene "Versionen" für die gleichen Daten).

Darstellung mit zwei Tabellen, die in einer Relation stehen:

Page 5: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Der Datenbankentwurf (Datenmodell) ist eine der wichtigsten Aufgaben, die der Datenbankentwickler zu erfüllen hat.

Dozenten

Institute

Lernveranstaltungen

Raumbelegung

Inventar

Datenbankentwurf

Page 6: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

1. Definitionen

CREATE DATABASE demo;CREATE TABLE buch( ); DROP TABLE buch;

SQL: einige wichtige SQL Anweisungen

Buch S. 656

4. Datenmanipulation: Einfügen, Löschen, Aktualisieren von Datensätzen

INSERT INTO buch VALUES ("Meier", "Barbara"); DELETE FROM buch SET verlag = "Addison" WHERE verlag = "ad"

3. Queries: Suchen von Daten in einer Tabelle nach bestimmten Kriterien

SELECT * FROM buch WHERE autor = "Makler"; 

2. OperationenUSE demo;SHOW TABLES;EXPLAIN TABLE buch;

5. Zugriffsrechte definierenGRANT ALL ON demo TO "username" IDENTIFIED BY "password"; REVOKE ..... Zugriffsrechte aufheben

Öffnet die Datenbank demo

Zeigt die Struktur der Tabelle buch an

Zeigt alle Tabellen der aktuellen Datenbank

Löscht die Tabelle buch

Erstellt Tabelle buch

Erstellt Datenbank demo

Page 7: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

MySQL

MySQL ist ein vollwertiges Datenbanksystem

• aufgebaut auf der Grundlage von SQL • gratis im Internet (www.mysql.com), läuft auf den meisten Plattformen

• MySQL kann lokal oder auf einem Server installiert werden

• MySQL-Befehle können im Command-Modus eingegeben werden, es gibt auch Tools mit grafischer Benutzeroberfläche (Navicat, MySQL Manager)

Die wichtigsten Datentypen

Buch S. 657

MySQL

Page 8: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Eine MySQL Datenbank auf dem Server einrichten

Datenbankserver: kllab.unibe.ch

Anmeldung im Command-Modus:

>mysql –h kllab.unibe.ch –u user –p

password

Bereits von mir ausgeführt (für alle user):

mysql> CREATE DATABASE sdb2;

GRANT ALL ON sdb2.* TO "sdb2" IDENTIFIED BY "db2";

Abmelden:

mysql>quit1)

Database öffnen:

mysql> use sdb2;

Database changed

2)• Gross-/Kleinschreibweise

wird bei den Befehlen nicht berücksichtigt.

• jede Zeile endet mit ;

Page 9: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

mysql> create table buch (

-> id integer not null auto_increment primary key,

-> autor char(25),

-> titel char(40),

-> jahr year,

-> verlag char(20),

-> preis float);

Query OK, 0 rows affected (0.05 sec)

Buch S. 658

Eine Tabele erstellen:

3)

mysql> show tables;+----------------+| Tables_in_sdb2 | +----------------+| buch |+----------------+|1 rows in set (0.02 sec)

4)

MySQL Tabelle

Page 10: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

mysql> EXPLAIN buch;+--------+----------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+----------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || autor | char(25) | YES | | NULL | || titel | char(40) | YES | | NULL | || jahr | year(4) | YES | | NULL | || verlag | char(25) | YES | | NULL | || preis | float | YES | | NULL | |+--------+----------+------+-----+---------+----------------+6 rows in set (0.05 sec)

5)

mysql> INSERT INTO buch (autor, titel, jahr, verlag, preis) > VALUES ("Mankell", "Frost", 2003, "Zsolnay", 24.90);Query OK, 1 row affected (0.00 sec)

6)

explain, insert

Page 11: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

 mysql>SELECT * FROM buch;+----+---------+---------+------+-------+-------+| id | autor | titel | jahr |verlag |preis+----+---------+---------+------+--------+------+| 1 | Mankell | Frost | 2003 |Zsolnay|24.90| 2 | Draesler| MySQL | 2004 |bhv |21.50| 3 | Mankell | Sommer | 2001 |Addison|59.20+----+---------+---------+------+-------+-------+

7)

 mysql>SELECT * FROM buch WHERE autor = "Mankel";+----+---------+---------+------+-------+-------+| id | autor | titel | jahr |verlag |preis+----+---------+---------+------+--------+------+| 1 | Mankell | Frost | 2003 |Zsolnay|24.90| 3 | Mankell | Sommer | 2001 |Addison|59.20+----+---------+---------+------+-------+-------+

8)

select

Page 12: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Abfragen mit SELECT Allgemeine Form:

SELECT spalte .... Ausdruck ....FROM tabelleWHERE VergleichsaudruckORDER BY spalte [ASC|DESC]LIMIT Anzahl Zeilen

Weitere Auswahlmöglichkeiten:

SELECT * FROM buch WHERE autor = "Mankell" AND titel = "Frost";

SELECT * FROM buch WHERE jahr = 2002 OR jahr = 2004;

SELECT * FROM buch WHERE autor IN ("Mankell", "Draessler", "Bauer" );

SELECT * FROM buch WHERE jahr BETWEEN 2002 AND 2004;

Abfragen

Page 13: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Zugriff auf MySQL Datenbankenverschiedene Client-Server Technologien

Client 1JDBC, Java

DBMSMySQL

SQL-Statement

Result set

Client 2JDBC, Java

Client 3JDBC, Java

Daten

Datenbankserver Client-Applikationen

Java-Datenbankapplikation auf dem Client

DBMS auf dem Server

Webdatenbanken

Alle Installationen auf dem Server, auf dem Client nur Browser

Client 1Browser

DBMSMySQL

HTTP-Request

HTTP-Response

Client 2Browser

Client 3Browser

Daten

Webserver

Webserver mit Plugins(Tomcat, PHP)

JSP-EngineServlet

Java, JDBC

Technologien

Page 14: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Client (Java-Applikation)

Datenbankserver mit MySQL

Daten

Der Zugriff erfolgt in folgenden Schritten:

Learning By Doing

3. Verbindung zur Datenbank erstellen Statement

Resultset

8. Verbindung zur Datenbank schliessen

2. JDBC-Treiber laden

JDBC (Java DataBase Connectivity)

JDBC enthält Objekte und Methoden, die den Zugriff auf Datenbanken ermöglichen.Die Java-Applikation läuft auf einem Client-Rechner, der mit Hilfe des entsprechenden JDBC-Treibers eine Verbindung zu einer auf einem Remote-Server liegenden Datenbank aufbaut.

JDBC-Treiber für MySQL: mysql-connector-java-3.0.8-stable-bin.jar (von "http://dev.mysql.com/downloads/connector/" herunterladen und in das Verzeichnis jre/lib/ext des JDK's kopieren).

1. Importieren der notwendigen Klassenimport java.sql.*;

4. Statement-Objekt erstellen und SQL-Statement definieren

7. Ergebnisse anzeigen

4. SQL-Query wird ausgeführt

5. Resultset wird zurückgeschickt

Buch S. 662

JDBC

Page 15: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

DbEx1.java

Class.forName("org.gjt.mm.mysql.Driver");

Connection con = DriverManager.getConnection( "jdbc:mysql://130.92.13.49/sdb2/","sdb2","db2");

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM buch");

while (rs.next()) + rs.getString("titel") + ", erschienen " + rs.getInt("jahr") + " bei " + rs.getString("verlag"));

stmt.close();con.close();

Connection con = DriverManager.getConnection( "jdbc:mysql://130.92.13.49/sdb2/","sdb2","db2");

Verbindung zur Datenbank erstellen

Statement stmt = con.createStatement(); Statement-Objekt erstellen

ResultSet rs = stmt.executeQuery("SELECT * FROM buch");

Statement ausführen

stmt.close();con.close(); Statement und Verbindung schliessen

import java.sql.*;

Class.forName("org.gjt.mm.mysql.Driver");

JDBC-Treiber laden

importieren der notwendigen Klassen

import java.sql.*;

Ergebnis anzeigen

DbEx1

Buch S. 663

Page 16: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

ResultSet rs = stmt.executeQuery("SELECT * FROM buch WHERE autor = 'Mankell'");

Ergänzen Sie die Datenbankapplikation DbEx1.java mit verschiedenen SQL-Abfragen:

ResultSet rs = stmt.executeQuery("SELECT * FROM buch WHERE jahr = 2003 AND verlag = 'Zsolnay'");

Achten Sie dabei auf die doppelten Anführungszeichen " ' ' " .

Aufgaben

Aufgaben

Page 17: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

Buch S. 665

Die Datebank-Applikation DbEx2.java mit der zugehörigen Klasse DbDialog.java enthält alle für die Praxis wichtigen Datenbankoperationen (Navigation, Update, Insert, Delete).

Ihre Aufgabe ist, diese Applikation so anzupassen, so dass Sie mit Ihrer Datenbank kommuniziert. Fügen Sie einige Datensätze hinzu und testen Sie beide Applikationen DbEx1.java und DbEx2.java.

Datenbank-Applikation mit einer grafischen Benutzeroberfläche

DbEx2

Page 18: Learning By Doing JDBC (Java DataBase Connectivity) Der Begriff JDBC bezeichnet ein von Sun entwickeltes Verfahren und eine zugehörige Klassenbibliothek,

Learning By Doing

• Einfachheit

• Leichte Handhabung bei Installation und Versionenkontrolle

• Sicherheit

• Stabilität

• Plattformunabhängigkeit

• Weiterverwendbarkeit verschiedener Datenbanksysteme

• Kostengünstig (alle Komponenten gratis vom Internet)

Vorteile von Java und JDBC:

Vorteile von JDBC