• Keine Ergebnisse gefunden

•Vorsicht: JDBC legt sich nicht auf SQL fest •Java DataBaseConnectivity•Standard zum Zugriff auf die Datenbank von Java Anwendungen•Vorgehensweise: JDBC

N/A
N/A
Protected

Academic year: 2022

Aktie "•Vorsicht: JDBC legt sich nicht auf SQL fest •Java DataBaseConnectivity•Standard zum Zugriff auf die Datenbank von Java Anwendungen•Vorgehensweise: JDBC"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

JDBC

• Java DataBase Connectivity

• Standard zum Zugriff auf die Datenbank von Java Anwendungen

• Vorgehensweise:

– Erzeugen einer Verbindung zum DBMS – Erzeugen eines „Statements“ (DB-Befehl) – ggf. Parameterübergabe

– Ausführen des Befehls

– ggf. Auslesen des Ergebnisses

• Vorsicht: JDBC legt sich nicht auf SQL fest

(2)

Aufbau einer Verbindung

Connection conn = DriverManager.getConnection(

url_der_db, username, password)

Treiber wird vom DBMS mitgeliefert

•url_der_db: Identikator der Instanz

•Username, Passwort: klar

•Weitere Einstellungen: Transaktionslevel, Puffer, etc. durch Programm oder Konfigurationsdatei

(3)

Lesen der Namen aller Profs

Statement s = conn.createStatement();

ResultSet r;

s.execute(„SELECT name FROM professoren“);

r = s.getResultSet();

while (r.next()) {

output(r.getString(1));

}

r.close();

(4)

Anfragen mit Parameter

PreparedStatement s = conn.prepareStatement(

„SELECT name FROM profs WHERE rang = ?);

ResultSet r;

...

s.setString(1, „C3“);

r = s.executeQuery();

while (r.next()) ...

(5)

Tipps und Tricks

Connection Pooling

• Erzeuge mehrere Verbindungen zum Datenbanksystem

• Vor jedem Zugriff, belege eine freie Verbindung

• Führe Zugriff über diese Verbindung durch

• Vorteil: Eine langandauernde Datenbankoperation blockiert nicht andere. Andere Operationen

können über andere Verbindungen laufen

• Typische Anzahl von Verbindungen: 5 – 10, danach kontraproduktiv

(6)

Tipps und Tricks

Cursor Caching

• PreparedStatements für typische Operationen

• Beispiel:

insert into profs(name, rang) values(?,?)

• Belege ? mit Werten vor jeder Berufung

• Vorteil: Aufwand für Berufung wird reduziert

• Nachteil: Anfrageoptimierer hat keine Statistiken für ?

(7)

Zusammenfassung

• Einfacher Mechanismus zum Senden von Befehlen und Empfangen von Ergebnissen

• SQL Syntax wird nicht zur Übersetzungszeit

überprüft (!!!) Aus Sicht von Java sind Anfragen einfach nur Strings

• Typsicherheit der Parameter wird auch erst zur Laufzeit überprüft

• Alle JDBC Statements schmeißen SQLExceptions

• Neuere Standards: SQLJ – mehr Komfort und mehr Sicherheit zur Übersetzungszeit

(8)

SQL J

• Eingebettetes SQL in Java

• Strenge Typisierung durch Präprozessor

• Markierung von SQL Anweisungen durch #

• Ähnliches Iterator (Cursor) Prinzip wie in JDBC

#sql iterator ProfIterator(String name, String rang);

ProfIterator myProfs;

#sql myProfs = { SELECT name, rang FROM Professoren };

while (myProfs.next()) {

System.out.println(myProfs.name() + myProfs.rang());

}

Referenzen

ÄHNLICHE DOKUMENTE

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.

Arquillian Cube Docker Junit Rule Testing Dockerfile for Video Services Service Virtuallization.