\section{Programmschnittstellen}
Vor- und Nachteile:\\
Programmzugriff:
\begin{itemize}
		\item Keine SQL Injection nötig
		\item Kompakt
		\item spezieller Übersetzer nötig
\end{itemize}
Unterprogrammaufruf
\begin{itemize}
		\item Optimierung und Typprüfung
		\item SQL Injection möglich
		\item Aufwändig für Programmierer
\end{itemize}
\subsection{SQL Anfrage}
Aufruf einer SQL Anfrage mit Index:
\begin{lstlisting}[language=java]
RecordFile index = new KeyedRecordFile("KNr","r");
TID tid = index.read.Key(23);
RecordFile saetze = new DirectRecord(Kunden", "r");
Record ergebnis = saetze.read(tid);
print(ergebnis.toString());
\end{lstlisting}
Aufruf einer SQL Anfrage ohne Index:
\begin{lstlisting}[language = java]
RecordFile saetze = new DirectRecordFile("Kunden","r");
Record ergebnis;
while (saetze.hasNext()){
		ergebnis = saetze.next();
		if(ergebnis.getKNr() == 23){
				print(ergebnis);
				break;
		}
}
\end{lstlisting}

\subsection{SQL Schnittstelle}
\begin{enumerate}
		\item Verbindung aufbauen
				\begin{lstlisting}[language=java]
				Connection DriverManager.connect(username, password, database)
				\end{lstlisting}
		\item Methode um eine Anfrage auszuführen
				\begin{lstlisting}[language=java]
				Handle Connection.executeQuery (String query);
				\end{lstlisting}
		\item Methode um zu prüfen, ob es weitere Ergebnisse gibt
				\begin{lstlisting}[language=java]
				Boolean Handle.hasNext();
				\end{lstlisting}
		\item Methode um überhaupt an Ergebnisse zu kommen		
				\begin{lstlisting}[language=java]
				Boolean Handle.hasNext();
				\end{lstlisting}
\end{enumerate}
