\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}