Auswählen einer Datenquelle oder eines Treibers

Die von einer Anwendung verwendete Datenquelle oder der von einer Anwendung verwendete Treiber ist manchmal in der Anwendung hartcodiert. Eine von einer MIS-Abteilung geschriebene benutzerdefinierte Anwendung zum Übertragen von Daten aus einer Datenquelle in eine andere, würde zum Beispiel die Namen dieser Datenquellen enthalten. Mit anderen Datenquellen würde die Anwendung einfach nicht funktionieren. Ein weiteres Beispiel ist eine vertikale Anwendung, wie sie z. B. für die Auftragserfassung verwendet wird. Eine solche Anwendung verwendet immer dieselbe Datenquelle mit einem vordefinierten Schema, das der Anwendung bekannt ist.

Andere Anwendungen wählen die Datenquelle oder den Treiber zur Laufzeit aus. Dabei handelt es sich normalerweise um allgemeine Anwendungen, die Ad-hoc-Abfragen ausführen, wie z. B. eine Kalkulationstabelle, die ODBC zum Importieren von Daten verwendet. In solchen Anwendungen werden in der Regel die verfügbaren Datenquellen oder Treiber aufgeführt, und Benutzer können diejenigen auswählen, mit denen sie arbeiten möchten. Ob eine allgemeine Anwendung Datenquellen, Treiber oder beides auflistet, hängt oft davon ab, ob die Anwendung DBMS-basierte oder dateibasierte Treiber verwendet.

DBMS-basierte Treiber erfordern normalerweise einen komplexen Satz von Verbindungsinformationen, wie z. B. die Netzwerkadresse, das Netzwerkprotokoll, den Datenbanknamen usw. Der Zweck einer Datenquelle besteht darin, alle diese Informationen auszublenden. Daher eignet sich das Datenquellenparadigma für die Verwendung mit DBMS-basierten Treibern. Eine Anwendung kann eine Liste von Datenquellen für den Benutzer auf eine von zwei Arten anzeigen. Sie kann SQLDriverConnect mit dem Schlüsselwort DSN (Datenquellenname) ohne zugeordneten Wert aufrufen. Der Treiber-Manager zeigt eine Liste der Datenquellennamen an. Wenn die Anwendung die Darstellung der Liste steuern möchte, ruft sie SQLDataSources auf, um eine Liste der verfügbaren Datenquellen abzurufen, und erstellt einen eigenen Dialog. Diese Funktion wird vom Treiber-Manager implementiert und kann aufgerufen werden, bevor Treiber geladen werden. Die Anwendung ruft dann eine Verbindungsfunktion auf und übergibt ihr den Namen der ausgewählten Datenquelle.

Wenn keine Datenquelle angegeben ist, wird die Standarddatenquelle aus den Systeminformationen verwendet. (Weitere Informationen finden Sie unter Standardunterschlüssel.) Wenn SQLConnect mit einem ServerName-Argument aufgerufen wird, das nicht gefunden werden kann, ein NULL-Zeiger ist oder „DEFAULT“ lautet, stellt der Treiber-Manager eine Verbindung mit der Standarddatenquelle her. Die Standarddatenquelle wird auch verwendet, wenn in der Verbindungszeichenfolge, die in einem Aufruf von SQLDriverConnect oder SQLBrowseConnect verwendet wird, das DSN-Schlüsselwort auf „DEFAULT“ gesetzt ist oder die angegebene Datenquelle nicht gefunden wird. Darüber hinaus wird die Standarddatenquelle verwendet, wenn die Verbindungszeichenfolge, die in einem Aufruf von SQLDriverConnect verwendet wird, das DSN-Schlüsselwort nicht enthält.

Bei dateibasierten Treibern kann ein Dateiparadigma verwendet werden. Bei Daten, die auf dem lokalen Computer gespeichert sind, wissen die Benutzer oft, dass sich ihre Daten in einer bestimmten Datei befinden, wie z. B. Employee.dbf. Anstatt eine unbekannte Datenquelle auszuwählen, ist es für solche Benutzer einfacher, die ihnen bekannte Datei auszuwählen. Zur Umsetzung ruft die Anwendung zuerst SQLDrivers auf. Diese Funktion wird vom Treiber-Manager implementiert und kann aufgerufen werden, bevor Treiber geladen werden. SQLDrivers gibt eine Liste der verfügbaren Treiber zurück. Außerdem werden Werte für die Schlüsselwörter FileUsage und FileExtns zurückgegeben. Das Schlüsselwort FileUsage erklärt, ob dateibasierte Treiber Dateien als Tabellen behandeln, wie bei Xbase, oder als Datenbanken, wie bei Microsoft Access. Das Schlüsselwort FileExtns listet die vom Treiber erkannten Suffixe auf, wie z. B. .dbf für einen Xbase-Treiber. Anhand dieser Informationen erstellt die Anwendung einen Dialog, über den der Benutzer eine Datei auswählt. Basierend auf der Erweiterung der ausgewählten Datei stellt die Anwendung dann eine Verbindung mit dem Treiber her, indem sie SQLDriverConnect mit dem Schlüsselwort DRIVER aufruft.

Eine Anwendung kann nicht davon abgehalten werden, eine Datenquelle mit einem dateibasierten Treiber zu verwenden oder SQLDriverConnect mit dem Schlüsselwort DRIVER aufzurufen, um eine Verbindung mit einem DBMS-basierten Treiber herzustellen. Im Folgenden finden Sie mehrere gängige Verwendungsmöglichkeiten des Schlüsselworts DRIVER für DBMS-basierte Treiber:

  • Kein Erstellen von Datenquellen. Beispielsweise kann eine benutzerdefinierte Anwendung einen bestimmten Treiber und eine bestimmte Datenbank verwenden. Wenn der Treibername und alle zum Herstellen einer Verbindung mit der Datenbank erforderlichen Informationen in der Anwendung hartcodiert sind, müssen die Benutzer zum Ausführen der Anwendung keine Datenquelle auf ihrem Computer erstellen. Sie müssen nur die Anwendung und den Treiber installieren.

    Ein Nachteil dieser Methode besteht darin, dass die Anwendung erneut kompiliert und verteilt werden muss, wenn sich die Verbindungsinformationen ändern. Wenn in der Anwendung ein Datenquellenname hartcodiert ist und nicht die vollständigen Verbindungsinformationen, muss jeder Benutzer nur die Informationen in der Datenquelle ändern.

  • Einmaliges Zugreifen auf ein bestimmtes DBMS. Beispielsweise kann eine Tabellenkalkulation, die Daten durch Aufrufen von ODBC-Funktionen abruft, das Schlüsselwort DRIVER enthalten, um einen bestimmten Treiber zu identifizieren. Da der Treibername für die Benutzer, die über diesen Treiber verfügen, aussagekräftig ist, kann die Tabellenkalkulation unter diesen Benutzern weitergegeben werden. Wenn die Tabellenkalkulation einen Datenquellennamen enthalten würde, müsste jeder Benutzer zum Verwenden der Tabellenkalkulation dieselbe Datenquelle erstellen.

  • Durchsuchen des Systems nach allen für einen bestimmten Treiber zugänglichen Datenbanken. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit SQLBrowseConnect weiter unten in diesem Abschnitt.