\documentclass[a4paper, 11pt]{article}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{a4wide}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{listings}
\usepackage{float}
\usepackage[rflt]{floatflt}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\title{ADO &amp; Free Pascal}
\usepackage[
pdftitle={ADO &amp; Free Pascal}
pdfsubject={Ob OLE DB, ADO oder Zeos die Möglichkeiten für Free Pascal um auf Datenbanken zuzugreifen, sind mannigfaltig doch wo liegen die Unterschiede, sind Packages erforderlich oder reichen manchmal ein paar Code-Zeilen?}
pdfauthor={Udo Schmal}
pdfkeywords={Free Pascal, Microsoft Access, MSAccess}
]{hyperref}
\definecolor{darkblue}{rgb}{0,0,.5}
\hypersetup{pdftex=true, colorlinks=true, breaklinks=true, linkcolor=darkblue, menucolor=darkblue, pagecolor=darkblue, urlcolor=darkblue}
\begin{document}ADO \&amp; Free Pascal
\singlespacing
{\LARGE \textbf{\label{sec:title}Ob OLE DB, ADO oder Zeos die Möglichkeiten für Free Pascal um auf Datenbanken zuzugreifen}}

\singlespacing
{\large \textbf{Zugriff mit Free Pascal über OLE DB (Object Linking and Embedding, Database Library)}}

Sicherlich gibt es mehrere Methoden um über Free Pascal auf Datenbanken zuzugreifen aber als Erstes nun die kürzeste und zugleich schlecht dokumentierte Variante. OLE DB - Object Linking and Embedding Databases, (Low Level) COM (Component Object Model) basiertes Interface wurde erstellt um standardisierten Zugriff auf Datenquellen zu ermöglichen.

Diese Variante stellt nur sehr geringe Anforderungen an Free Pascal, es werden lediglich die Units ComObj und Variants benötigt, die Anforderungen an den Entwickler sind jedoch sehr hoch denn unter Lazarus bietet diese Variante keine Codevervollständigung, man sollte alle Befehle bereits kennen denn das was von Lazarus vorgeschlagen wird hilft einem nicht weiter.

Im folgenden Beispiel sind auch direkt Beispiele für weitere Datenbanken eingefügt damit ich dieses Beispiel nicht bei jeder weiteren Datenbank aufführen muss.

OLE DB -\&gt; Jet OLE DB Provider -\&gt; Jet -\&gt; MSAccess

\href{http://www.gocher.me/code/OleDB.lpr}{OleDB.lpr}

\singlespacing
{\large \textbf{Zugriff mit Free Pascal über ADODB (Microsoft ActiveX Data Objects 2.8 Library)}}

Eine Abstraktionsschicht mehr ADO - ActiveX Data Objects, (High Level) einfach zu nutzende, Sprachen unabhängige API für den Zugriff auf von OLE DB unterstützte Datenbanken.

ADODB -\&gt; OLE DB -\&gt; Jet OLE DB Provider -\&gt; Jet -\&gt; MSAccess

Diese Variante benötigt die Units ADODB die sich mit dem Werkzeug \&quot;Import Type Library\&quot; von Lazarus aus der Datei msado15.dll (C:\textbackslashProgramme\textbackslashGemeinsame Dateien\textbackslashSystem\textbackslashado\textbackslash) erzeugen lässt.

Import ADODB : Microsoft ActiveX Data Objects 2.x-Objektbibliothek\newline
 C:\textbackslashProgram Files\textbackslashCommon Files\textbackslashSystem\textbackslashado\textbackslashmsado15.dll \href{http://www.gocher.me/downloads/adodb_6_1_tlb.pas}{adodb 6 1 tlb.pas}

\href{http://www.gocher.me/code/Ado.lpr}{Ado.lpr}

Wenn man sich dann noch ein wenig Mühe macht und die Objekte optimiert...

ADO (eigene Klassen) -\&gt; ADODB -\&gt; OLE DB -\&gt; Jet OLE DB Provider -\&gt; Jet -\&gt; MSAccess

\href{http://www.gocher.me/code/myAdo.lpr}{myAdo.lpr}

\singlespacing
{\large \textbf{Zugriff mit Free Pascal über Zeos}}

Der große Vorteil von Zeos besteht darin das ein späterer Umstieg auf eine andere Datenbank leichter möglich ist, besonders wenn hierzu keine ADO Schnittstelle existiert oder wenn ein Systemumstieg geplant ist. Des weiteren existieren etliche visuelle Komponenten, die natürlich in den zuvor aufgeführten Varianten nicht zur Verfügung stehen.

Leider steht zur Zeit jedoch Zeos mit ADO Unterstützung nur für Delphi zur Verfügung, mit einem Patch und Unit OleDB lässt sich Zeos jedoch auch unter Free Pascal nutzen. Die Unit OleDB lässt sich aus der Datei oledb.h aus dem Microsoft Data Access SDK 2.8 herleiten was aber nicht einfach ist. Wie legitim der Download der oledb.pas von Google http://cbuilder-vcl.googlecode.com/svn/trunk/Source/vcl/oledb.pas ist, ist fraglich.

\href{http://www.gocher.me/downloads/ZeosAdo.patch}{ZeosAdo.patch}

Im Beispiel wurden auch Zugriffe die nicht über ADO laufen eingebaut, hierfür werden unterschiedliche Librarys (DLLs) je Datenbank benötigt.

\href{http://www.gocher.me/code/zeos.lpr}{zeos.lpr}
\end{document}