Freigeben über


Auswählen einer Datenquelle oder eines Treibers

Die in einer Anwendung verwendete Datenquelle oder der Treiber wird manchmal hartcodiert. Beispielsweise enthält eine benutzerdefinierte Anwendung, die von einer MIS-Abteilung zum Übertragen von Daten von einer Datenquelle zu einer anderen geschrieben wurde, die Namen dieser Datenquellen - die Anwendung würde einfach mit keinen anderen Datenquellen funktionieren. Ein weiteres Beispiel ist eine vertikale Anwendung, z. B. eine anwendung, die für die Auftragseingabe verwendet wird. Eine solche Anwendung verwendet immer dieselbe Datenquelle, die ein vordefiniertes Schema aufweist, das von der Anwendung bekannt ist.

Andere Anwendungen wählen zur Laufzeit die Datenquelle oder den Treiber aus. In der Regel handelt es sich hierbei um generische Anwendungen, die Ad-hoc-Abfragen ausführen, 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 auswählen, mit denen sie arbeiten möchten. Ob eine generische Anwendung Datenquellen, Treiber oder beide häufig auflistet, hängt davon ab, ob die Anwendung DBMS-basierte oder dateibasierte Treiber verwendet.

DBMS-basierte Treiber erfordern in der Regel einen komplexen Satz von Verbindungsinformationen, 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. Es kann SQLDriverConnect mit dem DSN-Schlüsselwort (Datenquellenname) und keinem 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 ein eigenes Dialogfeld zu erstellen. Diese Funktion wird vom Treiber-Manager implementiert und kann aufgerufen werden, bevor treiber geladen werden. Die Anwendung ruft dann eine Verbindungsfunktion auf und übergibt sie den Namen der ausgewählten Datenquelle.

Wenn keine Datenquelle angegeben ist, wird die durch die Systeminformationen angegebene Standarddatenquelle verwendet. (Weitere Informationen finden Sie unter "Standardunterschlüssel".) Wenn SQLConnect mithilfe eines ServerName-Arguments aufgerufen wird, das nicht gefunden werden kann, ein Nullzeiger ist oder "DEFAULT" lautet, stellt der Treiber-Manager eine Verbindung mit der Standarddatenquelle her. Die Standarddatenquelle wird auch verwendet, wenn die Verbindungszeichenfolge, die in einem Aufruf von SQLDriverConnect oder SQLBrowseConnect verwendet wird, das DSN-Schlüsselwort auf "DEFAULT" festgelegt 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, nicht das DSN-Schlüsselwort enthält.

Mit dateibasierten Treibern ist es möglich, ein Dateiparadigma zu verwenden. Bei Daten, die auf dem lokalen Computer gespeichert sind, wissen Benutzer häufig, dass sich ihre Daten in einer bestimmten Datei befinden, z. B. Employee.dbf. Anstatt eine unbekannte Datenquelle auszuwählen, ist es für solche Benutzer einfacher, die datei auszuwählen, die sie kennen. Um dies zu implementieren, 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; sie gibt auch Werte für die Schlüsselwörter FileUsage und FileExtns zurück. Das Schlüsselwort FileUsage erläutert, ob dateibasierte Treiber Dateien wie Xbase oder Datenbanken wie Microsoft Access als Tabellen behandeln. Das FileExtns-Schlüsselwort listet die Dateinamenerweiterungen auf, die der Treiber erkennt, z. B. DBF für einen Xbase-Treiber. Mithilfe dieser Informationen erstellt die Anwendung ein Dialogfeld, über das der Benutzer eine Datei auswäht. 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.

Es gibt nichts, um zu verhindern, dass eine Anwendung eine Datenquelle mit einem dateibasierten Treiber verwendet oder SQLDriverConnect mit dem DRIVER-Schlüsselwort aufruft, um eine Verbindung mit einem DBMS-basierten Treiber herzustellen. Nachfolgend finden Sie mehrere häufige Verwendungen des DRIVER-Schlüsselworts für DBMS-basierte Treiber:

  • Keine Datenquellen erstellen. Beispielsweise kann eine benutzerdefinierte Anwendung einen bestimmten Treiber und eine bestimmte Datenbank verwenden. Wenn der Treibername und alle Informationen, die zum Herstellen einer Verbindung mit der Datenbank erforderlich sind, in der Anwendung hartcodiert sind, müssen Benutzer keine Datenquelle auf ihrem Computer erstellen, um die Anwendung auszuführen. Alles, was sie tun müssen, ist die Installation der Anwendung und des Treibers.

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

  • Zugreifen auf ein bestimmtes DBMS ein einziges Mal. Beispielsweise kann eine Kalkulationstabelle, die Daten durch Aufrufen von ODBC-Funktionen abruft, das SCHLÜSSELwort DRIVER enthalten, um einen bestimmten Treiber zu identifizieren. Da der Treibername für alle Benutzer, die über diesen Treiber verfügen, sinnvoll ist, kann die Kalkulationstabelle unter diesen Benutzern übergeben werden. Wenn die Kalkulationstabelle einen Datenquellennamen enthielt, müsste jeder Benutzer dieselbe Datenquelle erstellen, um die Kalkulationstabelle zu verwenden.

  • Durchsuchen des Systems für alle Datenbanken, auf die für einen bestimmten Treiber zugegriffen werden kann. Weitere Informationen finden Sie unter "Herstellen einer Verbindung mit SQLBrowseConnect" weiter unten in diesem Abschnitt.