\section{Modalit"aten des Datenbankzugriffs und ihre Sprachschnittstellen}
\label{Modalit"aten des Datenbankzugriffs und ihre Sprachschnittstellen}

\subsection{Werkzeuge zum interaktiven Datenbankzugriff}
\label{Werkzeuge zum interaktiven Datenbankzugriff}

Reportgeneratoren, QBE, (s.a. UNIX Tools). Benutzen 
standardisierte Dienstzugangsschnittstellen.

\subsection{Statischer Datenbankzugriff aus monomorphen Programmiersprachen}
\label{Statischer Datenbankzugriff aus monomorphen Programmiersprachen}

\comment{Embedded SQL}

\comment{Architekturabbildung. Beispiel mit Code}

Probleme: Debugger

Vorteil: Integrierte Sicht

\subsubsection{Anfrage- und Cursordefinition in Embedded SQL}
\label{Anfrage- und Cursordefinition in Embedded SQL}

\comment{Updates, Stabilit"at (S. 265)}

\subsubsection{Typisierung und Parametrisierung in Embedded SQL}
\label{Typisierung und Parametrisierung in Embedded SQL}

Syntax f"ur Gastsprachenvariable (host variable). 

Abbildung: Bindung?

Wertparameter"ubergabe in Ausdr"ucken, Bsp. INSERT ... VALUES

Variablenparameter"ubergabe in SELECT INTO

Indikatorvariablen:

Lesender Zugriff auf Nullwerte

Schreiben von Nullwerten

Gastsprachentypkompatibilit"at. Informationsverlust beim Lesen 
INDICATOR (Strings einfach, andere Typen komplexer)

Korrespondenztabelle C?

\subsubsection{Programmierte SQL Fehlerbehandlung}
\label{Programmierte SQL Fehlerbehandlung}

\comment{Beachte:} Auch Datendefinitionen sind Anweisungen 
("Anderungen auf dem Katalog). Integrit"atsbedingungen k"onnen 
verletzt werden (doppelte Namen) oder Syntax falsch oder Zugriffsrechte 
falsch.

Statusparameter: SQLCODE, SQLSTATE

\subsection{Statischer Datenbankzugriff aus polymorphen Programmiersprachen} 
\label{Statischer Datenbankzugriff aus polymorphen Programmiersprachen}

(ODMG-93 C++ Bindings)

\subsubsection{"Uberblick "uber die ODMG-93 C++ Sprachanbindung}
\label{Ueberblick ueber die ODMG-93 C++ Sprachanbindung}

ODL: Minimal erweiterte Syntax f"ur Klassendefinitionen (
\p{inverse) , Modifikation der Semantik (?), vordefinierte 
Klassenbibliothek}

OML: Keine Spracherweiterung, jedoch objektabh"angig neue Semantik 
f"ur Operatoren.

Physikalische Pragmas.

Abbildung 5-1 aus ODMG Report (?)

Persistenzf"ahige Klassen. Ref$<$T$>$. Indirektion "uber handle. 
Dereferenzieren von gel"oschten Objekten erzeugt eine Ausnahme.

Referenzen auf transiente Werte

Queries \& Transaktionen arbeiten nur konsistent auf persistenten 
Objekten

\subsubsection{Korrespondenz zwischen ODMG Datenmodell und C++-Typsystem}
\label{Korrespondenz zwischen ODMG Datenmodell und C++-Typsystem}

Literale auf Literale. Booleans abgebildet auf int.

Strings auf spezielle Klasse String. Analog Date, Time, ...

Strukturen auf Structs

Genau eine C++ Klasse pro Typspezifikation

Parametrisierte Kollektionen abgebildet auf Template Classes

Attribute abgebildet auf data members. Kein "Uberschreben der 
get\_value und set\_value Methoden m"oglich.

Beziehungen abgebildet auf Objektreferenzen oder Kollektionen 
von Objektreferenzen als Objektattribute.

Referentielle Integrit"at bidirektionaler Beziehungen wird durch 
"Uberschreiben der set\_value Methoden erreicht..

Keine extents und keys

Umgekehrt

Unions, bit fields und references nur eingeschr"ankt erlaubt.

\subsubsection{Objektmanipulation in C++ Syntax}
\label{Objektmanipulation in C++ Syntax}

new "uberladen. Spezifikation des Speicherortes (fl"uchtig, in 
Datenbank, nahe an anderem Objekt). e weitere Argumente

Explizite Operationen (``mark modified'', ``delete''), um Kommunikation 
mit Speicherverwaltung des DBMS durchzuf"uhren.

\subsubsection{Lose Einbettung von OQL-Anfragen in C++}
\label{Lose Einbettung von OQL-Anfragen in C++}

Eng gekoppelt. Grammatik erweitert. Typregeln erweitert. Optimierbar 
zum "Ubersetzungszeitpunkt.

Lose gekoppelt: Anfrageausdr"ucke als Strings in schwach typisierte 
Funktion eingebunden. Parsing, "Ubersetzung, Optimierung zur 
Laufzeit. Generik "uber Stringmanipulationen.

a) query Methode f"ur Kollektionen

b) oql Funktion mit variabler Parameteranzahl.

\subsection{Verbesserte Datenbankanbindung durch sprachliche Erweiterbarkeit}
\label{Verbesserte Datenbankanbindung durch sprachliche Erweiterbarkeit}

Ausblick auf ODMG-93 Bindungen

\subsection{Dynamischer Datenbankzugriff aus Programmiersprachen} 
\label{Dynamischer Datenbankzugriff aus Programmiersprachen} 

(ODBC API)


\comment{Dynamic SQL, ODBC. Beispiel. Literaturverweis (??).}

\comment{Typisierungsproblematik.}

