Freigeben über


Herstellen einer Verbindung mit einer Datenquelle (ODBC)

Nach dem Zuordnen von Umgebungs- und Verbindungshandles und dem Festlegen von Verbindungsattributen stellt die Anwendung eine Verbindung mit der Datenquelle oder dem Treiber her. Es gibt drei Funktionen, mit denen Sie eine Verbindung herstellen können:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Weitere Informationen zum Herstellen von Verbindungen mit einer Datenquelle, einschließlich der verfügbaren Optionen für verbindungszeichenfolgen, finden Sie unter Verwenden von Verbindungszeichenfolgenstichwörtern mit SQL Server Native Client.

SQLConnect

SQLConnect ist die einfachste Verbindungsfunktion. Er akzeptiert drei Parameter: einen Datenquellennamen, eine Benutzer-ID und ein Kennwort. Verwenden Sie SQLConnect , wenn diese drei Parameter alle Informationen enthalten, die zum Herstellen einer Verbindung mit der Datenbank erforderlich sind. Erstellen Sie dazu eine Liste von Datenquellen mit SQLDataSources; Den Benutzer auffordern, eine Datenquelle, eine Benutzer-ID und ein Kennwort einzugeben; und rufen Sie dann SQLConnect auf.

SQLConnect geht davon aus, dass ein Datenquellenname, eine Benutzer-ID und ein Kennwort ausreichen, um eine Verbindung mit einer Datenquelle herzustellen und dass die ODBC-Datenquelle alle anderen Informationen enthält, die der ODBC-Treiber benötigt, um die Verbindung herzustellen. Im Gegensatz zu SQLDriverConnect und SQLBrowseConnect verwendet SQLConnect keine Verbindungszeichenfolge.

SQLDriverConnect

SQLDriverConnect wird verwendet, wenn mehr Informationen als der Datenquellenname, die Benutzer-ID und das Kennwort erforderlich sind. Einer der Parameter für SQLDriverConnect ist eine Verbindungszeichenfolge, die treiberspezifische Informationen enthält. Sie können SQLDriverConnect anstelle von SQLConnect aus den folgenden Gründen verwenden:

  • So geben Sie treiberspezifische Informationen zur Verbindungszeit an.

  • Um anzufordern, dass der Treiber den Benutzer zur Eingabe von Verbindungsinformationen auffordert.

  • So stellen Sie eine Verbindung her, ohne eine ODBC-Datenquelle zu verwenden.

Die SQLDriverConnect-Verbindungszeichenfolge enthält eine Reihe von Schlüsselwort-Wert-Paaren, die alle Verbindungsinformationen angeben, die von einem ODBC-Treiber unterstützt werden. Jeder Treiber unterstützt zusätzlich zu treiberspezifischen Schlüsselwörtern für alle vom Treiber unterstützten Verbindungsinformationen die Standard-ODBC-Schlüsselwörter (DSN, FILEDSN, DRIVER, UID, PWD und SAVEFILE). SQLDriverConnect kann zum Herstellen einer Verbindung ohne Datenquelle verwendet werden. Eine Anwendung, die zum Herstellen einer "DSN-less"-Verbindung mit einer Instanz von SQL Server entwickelt wurde, kann z. B. SQLDriverConnect mit einer Verbindungszeichenfolge aufrufen, die die Anmelde-ID, das Kennwort, die Netzwerkbibliothek, den Servernamen für die Verbindung und die zu verwendende Standarddatenbank definiert.

Bei Verwendung von SQLDriverConnect gibt es zwei Optionen, um den Benutzer nach erforderlichen Verbindungsinformationen aufzufordern:

  • Anwendungsdialogfeld

    Sie können ein Anwendungsdialogfeld erstellen, das zur Eingabe von Verbindungsinformationen auffordert, und dann SQLDriverConnect mit einem NULL-Fensterhandle aufruft und "DriverCompletion " auf SQL_DRIVER_NOPROMPT festgelegt ist. Diese Parametereinstellungen verhindern, dass der ODBC-Treiber ein eigenes Dialogfeld öffnet. Diese Methode wird verwendet, wenn es wichtig ist, die Benutzeroberfläche der Anwendung zu steuern.

  • Dialogfeld "Treiber"

    Sie können die Anwendung codieren, um ein gültiges Fensterhandle an SQLDriverConnect zu übergeben und den DriverCompletion-Parameter auf SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT oder SQL_DRIVER_COMPLETE_REQUIRED festzulegen. Der Treiber generiert dann ein Dialogfeld, in dem der Benutzer zur Eingabe von Verbindungsinformationen aufgefordert wird. Diese Methode vereinfacht den Anwendungscode.

SQLBrowseConnect

SQLBrowseConnect, z. B. SQLDriverConnect, verwendet eine Verbindungszeichenfolge. Mithilfe von SQLBrowseConnect kann eine Anwendung jedoch eine vollständige Verbindungszeichenfolge iterativ mit der Datenquelle zur Laufzeit erstellen. Auf diese Weise kann die Anwendung zwei Dinge ausführen:

  • Erstellen Sie eigene Dialogfelder, um diese Informationen einzugeben, wodurch die Kontrolle über die Benutzeroberfläche beibehalten wird.

  • Durchsuchen Sie das System nach Datenquellen, die von einem bestimmten Treiber verwendet werden können, möglicherweise in mehreren Schritten.

    Beispielsweise kann der Benutzer zuerst das Netzwerk nach Servern durchsuchen und nach der Auswahl eines Servers den Server nach Datenbanken durchsuchen, auf die der Treiber zugreifen kann.

Wenn SQLBrowseConnect eine erfolgreiche Verbindung abgeschlossen hat, wird eine Verbindungszeichenfolge zurückgegeben, die bei nachfolgenden Aufrufen von SQLDriverConnect verwendet werden kann.

Der ODBC-Treiber für SQL Server Native Client gibt immer SQL_SUCCESS_WITH_INFO für eine erfolgreiche SQLConnect-, SQLDriverConnect- oder SQLBrowseConnect-Instanz zurück. Wenn eine ODBC-Anwendung SQLGetDiagRec aufruft, nachdem sie SQL_SUCCESS_WITH_INFO erhalten hat, kann sie die folgenden Meldungen empfangen:

5701
Gibt an, dass SQL Server den Kontext des Benutzers in die standarddatenbank eingibt, die in der Datenquelle definiert ist, oder in der Standarddatenbank, die für die in der Verbindung verwendete Anmelde-ID definiert ist, wenn die Datenquelle nicht über eine Standarddatenbank verfügt.

5703
Gibt die Sprache an, die auf dem Server verwendet wird.

Das folgende Beispiel zeigt die Nachricht, die von dem Systemadministrator für eine erfolgreiche Verbindung zurückgegeben wurde:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

Sie können Nachrichten 5701 und 5703 ignorieren; sie sind nur informational. Sie sollten jedoch keinen SQL_SUCCESS_WITH_INFO Rückgabecode ignorieren, da andere Nachrichten als 5701 oder 5703 möglicherweise zurückgegeben werden. Wenn ein Treiber beispielsweise eine Verbindung mit einem Server herstellt, auf dem eine Instanz von SQL Server mit veralteten kataloggespeicherten Prozeduren ausgeführt wird, ist einer der Fehler, die über SQLGetDiagRec zurückgegeben werden, nachdem ein SQL_SUCCESS_WITH_INFO lautet:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

Die Fehlerbehandlungsfunktion einer Anwendung für SQL Server-Verbindungen sollte SQLGetDiagRec aufrufen, bis sie SQL_NO_DATA zurückgibt. Sie sollte dann auf andere Nachrichten als die nachrichten mit einem pfNativen Code von 5701 oder 5703 reagieren.

Siehe auch

Kommunikation mit SQL Server (ODBC)