Freigeben über


Herstellen einer Verbindung mit einer Datenquelle (ODBC)

Nach dem Zuweisen der Umgebungs- und Verbindungshandles und dem Festlegen der Verbindungsattribute stellt die Anwendung eine Verbindung zur Datenquelle oder zum Treiber her. Es gibt drei Funktionen, die Sie verwenden können, um eine Verbindung herzustellen:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

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

SQLConnect

SQLConnect ist die einfachste Verbindungsfunktion. Sie akzeptiert drei Parameter: Datenquellenname, Benutzer-ID und Kennwort. Verwenden Sie SQLConnect , wenn diese drei Parameter alle Informationen enthalten, die zum Herstellen einer Verbindung mit der Datenbank erforderlich sind. Erstellen Sie hierzu mithilfe von SQLDataSources eine Liste von Datenquellen. den Benutzer zur Eingabe einer Datenquelle, einer Benutzer-ID und eines Kennworts aufzufordern; 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 zum Herstellen der Verbindung benötigt. Im Gegensatz zu SQLDriverConnect und SQLBrowseConnect verwendet SQLConnect keine Verbindungszeichenfolge.

SQLDriverConnect

SQLDriverConnect wird verwendet, wenn mehr Informationen als der Name der Datenquelle, 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:

  • Um zum Zeitpunkt des Verbindungsaufbaus treiberspezifische Informationen anzugeben.

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

  • Um eine Verbindung herzustellen, ohne eine ODBC-Datenquelle zu verwenden.

Die SQLDriverConnect-Verbindungszeichenfolge enthält eine Reihe von Schlüsselwort (keyword)-Wert-Paaren, die alle Verbindungsinformationen angeben, die von einem ODBC-Treiber unterstützt werden. Bei allen vom Treiber unterstützten Verbindungsinformationen unterstützt jeder Treiber über die treiberspezifischen Schlüsselwörter hinaus die standardmäßigen ODBC-Schlüsselwörter (DSN, FILEDSN, DRIVER, UID, PWD und SAVEFILE). SQLDriverConnect kann zum Herstellen einer Verbindung ohne Datenquelle verwendet werden. Beispielsweise kann eine Anwendung, die eine "DSN-lose" Verbindung mit einer instance SQL Server herstellen soll, SQLDriverConnect mit einer Verbindungszeichenfolge aufrufen, die die Anmelde-ID, das Kennwort, die Netzwerkbibliothek, den Servernamen, mit dem eine Verbindung hergestellt werden soll, und die zu verwendende Standarddatenbank definiert.

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

  • Dialogfeld "Anwendung"

    Sie können ein Anwendungsdialogfeld erstellen, das zur Eingabe von Verbindungsinformationen auffordert, und dann SQLDriverConnect mit einem NULL-Fensterhandle und driverCompletion aufrufen, die auf SQL_DRIVER_NOPROMPT festgelegt ist. Diese Parametereinstellungen verhindern, dass der ODBC-Treiber ein eigenes Dialogfeld öffnet. Diese Methode wird verwendet, wenn die Benutzeroberfläche der Anwendung gesteuert werden muss.

  • Dialogfeld "Filter"

    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 festlegen. Der Treiber generiert dann ein Dialogfeld, um den Benutzer zur Eingabe von Verbindungsinformationen aufzufordern. Diese Methode vereinfacht den Anwendungscode.

SQLBrowseConnect

SQLBrowseConnect verwendet wie SQLDriverConnect eine Verbindungszeichenfolge. Mithilfe von SQLBrowseConnect kann eine Anwendung jedoch eine vollständige Verbindungszeichenfolge iterativ mit der Datenquelle zur Laufzeit erstellen. Dadurch kann die Anwendung zwei Funktionen erfüllen:

  • Erstellen eigener Dialogfelder, um zur Eingabe dieser Informationen aufzufordern, wodurch die Kontrolle über die Benutzeroberfläche beibehalten wird.

  • Durchsuchen des Systems nach Datenquellen, die von einem bestimmten Treiber verwendet werden können. Dies sollte nach Möglichkeit in mehreren Schritten erfolgen.

    Beispielsweise kann der Benutzer zunächst das Netzwerk nach Servern durchsuchen und, sobald er einen Server ausgewählt hat, diesen nach Datenbanken durchsuchen, auf die der Treiber zugreifen kann.

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

Der SQL Server Native Client ODBC-Treiber 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 einfügen, die in der Datenquelle definiert ist, oder in die Standarddatenbank, die für die anmelde-ID definiert ist, die in der Verbindung verwendet wird, wenn die Datenquelle nicht über eine Standarddatenbank verfügt.

5703
Gibt die auf dem Server verwendete Sprache an.

Bei einer erfolgreichen Verbindung wird die folgende Meldung vom Systemadministrator zurückgegeben:

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 die Meldungen 5701 und 5703 ignorieren; sie dienen nur zu Informationszwecken. Den Rückgabecode SQL_SUCCESS_WITH_INFO hingegen sollten Sie nicht ignorieren, da auch andere Meldungen als 5701 oder 5703 zurückgegeben werden können. Wenn beispielsweise ein Treiber eine Verbindung mit einem Server herstellt, auf dem eine instance von SQL Server mit veralteten gespeicherten Katalogprozeduren ausgeführt wird, lautet einer der Fehler, der nach einer SQL_SUCCESS_WITH_INFO über SQLGetDiagRec zurückgegeben wird:

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 SQL_NO_DATA zurückgegeben wird. Es sollte dann auf alle anderen Nachrichten als die mit dem pfNativen Code 5701 oder 5703 reagieren.

Weitere Informationen

Kommunikation mit SQL Server (ODBC)