• Keine Ergebnisse gefunden

21_8335_600-RDBM-Schnittstellen

N/A
N/A
Protected

Academic year: 2022

Aktie "21_8335_600-RDBM-Schnittstellen"

Copied!
34
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung

unter dem Förderkennzeichen 16OH21005 gefördert.

Die Verantwortung für den Inhalt dieser Veröffentlichung liegt

beim Autor/bei der Autorin.

(2)

1

In diesem Abschnitten wollen wir uns mit den

wichtigsten Schnittstellen beschäftigen, die bei der Entwicklung einer Datenbank-Software in der Praxis eine Rolle spielen.

(3)

2

In diesem Abschnitt wollen wir uns mit den möglichen Schnittstellen beschäftigen, über die man auf Datenbanken zugreifen kann.

Ziel ist es einen Überblick zu erhalten und die wichtigsten Merkmale kennen zu

lernen.

Die wichtigsten Schnittstellen sind in der Abbildung aufgelistet. Diese werden wir uns als nächstes näher ansehen.

(4)

In dieser Abbildung sehen Sie eine grobe Einteilung und Klassifizierung der

einzelnen Schnittstellen.

Zum einen sehen Sie die Einteilung in Standard- oder Hersteller-Spezifische- Schnittstellen.

Zum anderen sehen Sie die Einteilung nach Art der Verwendung. Also, ob die

Schnittstelle für eine bestimmte

Programmiersprache bereitgestellt wird, in der eine Anwendung implementiert

werden kann, oder ob es eine Schnittstelle ist, bei der direkt SQL Befehle ausgeführt werden können.

3

(5)

Was genau unter den einzelnen Schnittstellen zu verstehen ist, werden wir uns nun näher

ansehen.

(6)

Beginnen wir mit den wichtigsten Schnittstellen.

Auf dieser Abbildung sind die Schnittstellen zu sehen, die in der Praxis am meisten eingesetzt werden.

Hierzu gehören:

JDBC .. Für JAVA Programme

ODBC .. Für C Programme

SQL Interpreter.. Um SQL Befehl direkt ausführen zu können

4

(7)

Beginnen wir mit dem SQL Interpreter.

Ein SQL-Interpreter ist zunächst einmal ein Software-Programm. Es bietet einem

Anwender eine Schnittstelle, die es erlaubt, dass SQL Anweisungen

eingegeben und ausgeführt werden können.

Zum Beispiel stellt SQL Server ein

Programm „sqlcmd.exe“ zur Verfügung.

Diese Programm kann z.B. in einer

„Command-Box“ gestartet werden, um

Entweder ein SQL Command einzugeben

5

(8)

und ausführen zu lassen

Oder man kann eine Datei angeben, welche SQL Anweisungen (SQL-Batch-Script) enthält.

Diese SQL Anweisungen werden dann

ausgeführt. Im Fehlerfall, wird die Ausführung des Script abgebrochen.

Typische Anwendungsfälle für das Ausführen dieser SQL-Batch-Scripts sind

Scripts für Wartungszwecken

Scripts zum Testen von Datenbanken bzgl.

Schema und/oder Inhalt

Scripts für Performance Tests

Scripts zur Installation / De-Installation von Datenbank-Schemas

Scripts zum Update von Datenbank Schemas

(9)

In dieser Abbildung sehen Sie als Beispiel die Optionen die beim Aufruf des SQL Server Interpreters „sqlcmd.exe“

angegeben werden können.

Die wichtigsten Optionen sind durch die Pfeile markiert. Im einzelnen sind dies:

-U für die Authentifizierung des Datenbank Users

-i Eingabedatei

-o Ausgabedatei

Wird keine Eingabedatei angegeben, so erhält man einen Command-Prompt und

6

(10)

kann dann SQL Anweisungen eingeben.

(11)

Als eine besondere Art von SQL Interpreter wird auch durch die H2 Datenbank zur Verfügung gestellt.

Hierbei handelt es sich nicht um eine

Kommando-Box, sondern um eine Web- Browser basierte Schnittstelle.

Wie Sie in der Abbildung sehen, erhält der Anwender eine Möglichkeit über einen Web-Browser eine SQL-Anweisung aus zu führen und das Ergebnis wird ebenfalls im

Browser angezeigt.

7

(12)

Hier sehen Sie nochmals aufgelistet, die typischen Einsatzgebiete für SQL – Interpreter.

Das wohl wichtigste Einsatzgebiet ist das Ausführen von SQL Ad Hoc Abfragen zu Test- und Wartungszwecken.

8

(13)

Als nächstes wollen wir uns näher mit der JDBC Schnittstelle beschäftigen.

Wie bereits erwähnt, handelt es sich um

eine Schnittstelle, die es erlaubt aus JAVA Programmen heraus, auf Datenbanken zuzugreifen.

Hierzu ist es notwendig, einen

entsprechenden JDBC Driver in das JAVA Projekt ( Build-Path und CLASSPATH) mit aufzunehmen, um die notwenige JAVA Klassen

für die Ansteuerung der Datenbank verwenden zu können .

9

(14)

Wie Sie in der Abbildung sehen, handelt es sich bei einem JDBC Driver um ein Java Archive File ( JAR).

Obwohl die Schnittstelle selbst standardisiert ist, ist die Erzeugung der Objekte bei den

einzelnen Herstellen unterschiedlich.

Daher ist es notwendig, sich den JDBC Driver von der jeweiligen Web-Seite des

Datenbankhersteller herunterzuladen und einzubinden.

(15)

In dieser Abbildung sehen Sie die wichtigsten Informationen für die

Verwendung des H2Database JDBC Drivers.

• Das JAR File muss in den Build-Path bzw. in den Class-Path eingebunden werden.

• Den Namen des JDBC-Drivers

• URL für den Verbindungsaufbau zu einer H2 Datenbank

10

(16)

In dieser Abbildung sehen Sie die wichtigsten Informationen für die Verwendung des SQL Server JDBC Drivers

Wie Sie sehen ist der größte Unterschied bei der Syntax der URL für den

Verbindungsaufbau.

11

(17)

Abschließend sehen wir uns noch ein

Beispielprogramm für den Zugriff auf eine SQL Server Datenbank.

Den Quellcode wurde einer offiziellen Quelle der Firma Microsoft entnommen. Den

entsprechenden Link finden Sie am Ende aufgelistet.

Zu (1)

Zunächst müssen wir das Java Standard Package für SQL importieren. Dies enthält die Schnittstellen-Definitionen für den SQL Zugriff.

12

(18)

Zu (2)

Nun müssen wir einen sogenannten Connection- String erstellen. Dieser Java-String enthält eine URL, die angibt

Auf welche SQL Server Datenbank wir

zugreifen wollen  in diesem Fall „localhost“ und die Standard Portnummer

Auf welche Datenbank wir zugriefen wollen  in diesem Fall ist der Name der Datenbank

„AdventureWorks“

Und mit welchen Datenbank Benutzer/ Passwort wir zugreifen wollen  in diesem Fall „UserName“

Zu (3)

Um eine Verbindung aufbauen zu können, müssen wir eine Instanz des SQL Server Driver erstellen.

Anschließend können wir über die Klassen

„DriverManager“ eine Verbindung zur Datenbank aufbauen. Hierzu übergeben wir den entsprechenden Connection String ( URL ) aus Teil (2).

Nun haben wir ein Verbindungsobjekt „con“ . Was wir damit tun können, sehen wir uns als nächstes an.

Quelle.

(19)

SQL Server  https://msdn.microsoft.com/de- de/library/aa342339(v=sql.110).aspx

(20)

Zu (3)

Nachdem wir eine Datenbank-Connection erstellt haben, können wir SQL

Anweisungen ausführen.

Zu(4)

Im einfachsten Fall wollen wie eine SELECT Anweisung ausführen.

Hierzu sehen wir in Schritt (4), das wir diese Anweisung einfach als JAVA String

ablegen können.

Zu(5)

13

(21)

In lassen wir für ein Statement Object erzeugen und verwenden hierzu das Connection Object, auf der wir auch die Anweisung ausführen

lassen wollen

Zu(6)

Im die Anweisung aus zu führen, verwenden wir unser „Statement-Object“ und übergeben in der Methode „executeQuery()“ den

entsprechende Java String, welche die SQL Anweisung ( in unserem Fall das SELECT Statement enthält.

Als Return-Wert der Methode „executeQuery()“

erhalten wir ein Objekt der Klasse ResultSet, welches die Ergebnismenge beinhaltet.

Zu(7)

Das Auswerten der Ergebnismenge erfolgt

dadurch, dass wir durch die einzelnen Elemente der Ergebnismenge iterieren: Dies erfolgt mittels der Methode „next()“

Bei der Methode „rs.getString() „ kann wie in dem Beispiel ein Index der Spalten-Nummer ( Start mit 0) = 1. Spalte) oder auch der Name der Spalte angegeben werden.

(22)

Hinweise:

Sieh auch : JDBC Api Spezifikation 

http://docs.oracle.com/javase/7/docs/technotes/guides/

jdbc/

(23)

Zum Abschluss des Thema JDBC hier noch eine kleine Tabelle.

Wie wir ja wissen, werden datenbank-intern eigene Datentypen wie VARCHAR etc.

verwendet.

Somit stellt sich die Frage: „Wie werden die datenbank-internen Datentypen auf die Datentypen der jeweiligen Sprache ( hier JAVA) abgebildet.

Für JAVA und JDBC ist diese Abbildung in

14

(24)

der Tabelle aufgeführt.

Quelle: http://www.service-

architecture.com/articles/database/mapping_sq l_and_java_data_types.html

Die Tabelle selbst ist aber nicht vollständig und zeigt nur die am meisten verwendeten

Datentypen.

Eine vollständige Beschreibung der Abbildung der Datentypen ist bei dem jeweiligen DB Hersteller zu finden.

Siehe auch:

• Oracle 

https://docs.oracle.com/cd/B19306_01/java.102/b14 188/datamap.htm

• SQL SERVER  https://msdn.microsoft.com/de- de/library/ms378878(v=sql.110).aspx

• H2 

http://www.h2database.com/html/datatypes.html

(25)

Nachdem wir uns etwas ausführlicher mit dem Thema JAVA und JDBC beschäftig haben, wenden wir uns der ODBC

Schnittstelle zu.

Wie Sie in der Abbildung sehen, ist diese dem JDBC Ansatz sehr ähnlich.

In diesem Fall handelt es sich bei ODBC um eine binäre Schnittstelle.

Dies bedeutet:

ODBC ist eine Bibliothek im binär Format.

 Maschinen Code

Sie ist somit Plattform spezifisch. Dies

15

(26)

bedeutet, dass wir für Windows und Linux jeweils unterschiedliche Bibliotheken benötigen. Dies gilt entsprechend auch für ein 32 Bit oder 64 Bit

Rechner Architektur.

Siehe auch

ODBC Reference Microsoft  https://msdn.microsoft.com/en-

us/library/ms714177(v=vs.85).aspx

(27)

Um die Wichtigkeit von ODBC zu verstehen, schauen wir uns kurz die Herkunft von

ODBC an.

Treibende Kraft hinter ODBC war Microsoft.

Dort hat man die Notwenigkeit gesehen, eine Standardschnittstelle für C-

Programme zu entwickeln, um auf Datenbestände

zugreifen zu können. Diese Schnittstellt hat sich schnell zu einem De-Facto Standard entwickelt, zumal X/OPEN und ISO/IEC mitgearbeitet haben und andere Hersteller auch diesen Standard implementiert haben.

16

(28)

Für den praktischen Einsatz bedeutet dies, dass man sich die jeweiligen ODBC Driver für die entsprechende Plattform von der Hersteller Web-Seite herunter laden muss.

Dort findet man auch entsprechende Beispiel- Programme.

Hinweis:

Code Sample und API Reference ist zu finden unter https://msdn.microsoft.com/en-

us/library/ms714177(v=vs.85).aspx

PS:

Wir ersparen uns hier ein Beispiel C-Programm, da ohne Kenntnisse der Programmiersprache C ein

Code-Beispiel keinen Sinn ergibt. Zumal Kenntnisse der

Programmiersprache C für diesen Grundlagenkurs nicht zwingend notwendig sind.

(29)

Wenden wir uns nun einer weiteren Möglichkeit zu, um von Programmen aus, auf eine Datenbank zugriefen zu können.

Auf dieser Abbildung sehen Sie, wie man SQL-Anweisungen direkt in seinen Quelle-Code einer Applikation einbetten kann.

Dies bedeutet, dass zum Beispiel, dass in einer Quell-Datei zwei Programmiersprachen zu finden sind.

Neben dem Quellcode z.B. in der Programmiersprache C können in den Code SQL Anweisungen eingetragen werden.

Die SQL Anweisungen beginnen dabei immer mit den Schlüsselworten „SQL EXEC“.

Beispiel:

SQL EXEC select * from foo where id = 123

Ein entsprechendes Beispiel-Programm finden sie unter: https://docs.oracle.com/cd/B10501_01/appdev.920/a97269/pc_20exi.htm#780 Um solche Programme ablaufen lassen zu können, werden diese Quelldateien durch einen sogenannten Präprozessor in die eigent

(30)

Unter Windows bietet die Firma Microsoft ein sogenannte ADO Schnittstelle an.

Die Abkürzung ADO steht dabei für Advanced Data Object. Aus der Historie heraus findet man auch sehr häufig die Bezeichnung ActiveX Data Objects.

Die ADO Schnittstelle wird dabei für verschiedene Programmiersprachen wie:

VisualBasic

C ++

C#

angeboten.

ADO.Net bietet dabei eine Schnittstelle an, die sowohl den Zugriff auf relationale als auch nicht relationale Daten wie zum Beispiel

Eine System Bibliothek mit dem Namen „System.Data.dll“ enthält dabei die ADO.NET Klassen, die für die Datenzugriffe benötigt werden.

Zum Beispiel bietet die Bibliothek „System.Data.SqlClient“ eine Möglichkeit auf SQL Server zugriefen zu können.

Ein entsprechendes Beispielprogramm in C# finden Sie unter: https://msdn.microsoft.com/de-de/library/dw70f090(v=vs.110).aspx#_Sq

Siehe Auch:

Microsoft ADO.NET: https://msdn.microsoft.com/en-us/library/h43ks021(v=vs.110).aspx

(31)

In dieser Abbildung sehen Sie eine weiteren Ansatz, bei dem herstellerspezifische APIs zum Einsatz kommen.

In diesem Fall liefert der jeweilige Hersteller des DBMS sowohl eine API-Beschreibung als auch eine Bibliothek, die zu der Anw Diese Art der Schnittstellen sind optimal auf das DBMS abgestimmt und erlauben eine sehr effizienten Zugriff (in Sinne von Zu

Siehe auch:

Oracle Call Level Interface : http://www.oracle.com/technetwork/database/features/oci/index-090945.html

Microsoft SQL Server Native Client: https://msdn.microsoft.com/en-us/library/cc280510.aspx

(32)

In dieser Abbildung sehen Sie die Namen der herstellerspezifischen API von einigen Herstellern.

Oracle stellt eine sogenannte OCI Schnittstelle bereit. Wobei das Akronym OCI für „Oracle Call Level Interface“ steht.

Für Postgres steht eine Bibliothek mit dem Namen „libpq“ zur Verfügung.

Für den Zugriff auf Microsoft SQL Server wird hierzu die Schnittstelle „OLE DB Provider“ angeboten.

In der Regel werden die jeweiligen Bibliotheken bei der Installation eines DBMS mit installiert. Alternativ kann man sich be Im Falle von Microsoft SQL Server suchen Sie nach „SQL Server Native Client“

Siehe auch:

Microsoft: https://msdn.microsoft.com/de-de/library/ms130978(v=sql.120).aspx

(33)
(34)

Referenzen

ÄHNLICHE DOKUMENTE

Hochschule für Technik, Wirtschaft und Kultur Leipzig Leipzig University of Applied Sciences..

– Wickelt Sequenz von Lese/Schreib-Kommandos als Transaktion ab (atomar: “ganz oder gar nicht“, isoliert: nur Ergebnisse kompletter Transaktionen sind sichtbar). – Wickelt

– Wickelt parallele Transaktionen so ab, daß alle Transaktionen sich verhalten, als seien sie sequentiell bearbeitet worden – Aktiviert Recovery-Manager im Fall eines System-

Für die Vorlesung werden wir verbreitete Standardwerke zum Thema VHDL und zur MIPS Architektur verwenden. Weitere Literatur (z.B. Datenblätter) werden mit Links auf der Homepage

Außerdem soll für Software, die in den § 34a-Behörden benutzt wird, eine Schnittstelle zum Register bereitgestellt werden, so dass die Datenpflege darüber erfolgen kann.. Diese

As data grows to exceed the limit of Cell A capacity, we bring the concept of evolving cell to evolve cell from type A to type B, i.e., Cell A becomes part of Cell B and evolved

Werden f¨ ur eine Anfrage Daten ben¨ otigt, die sich nicht im W¨ urfel befinden, oder ist die ben¨ otigte Suchzeit, innerhalb des W¨ urfels, gr¨ oßer als die Ausf¨ uhrung

In dieser Abbildung ist zu sehen, was passiert, wenn man aus einer Anwendung heraus einen Datensatz mittels einer SQL UPDATE ode.. Wurde an die Datenbank die UPDATE oder