Freigeben über


SQL Server-Suchbeispiel

Das folgende Beispiel zeigt, wie SQLBrowse Verbinden verwendet werden kann, um die verbindungen zu durchsuchen, die mit einem Treiber für SQL Server verfügbar sind. Zuerst fordert die Anwendung ein Verbindungshandle an:

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  

Als Nächstes ruft die Anwendung SQLBrowse Verbinden auf und gibt den SQL Server-Treiber mithilfe der von SQLDrivers zurückgegebenen Treiberbeschreibung an:

SQLBrowseConnect(hdbc, "DRIVER={SQL Server};", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Da dies der erste Aufruf von SQLBrowse Verbinden ist, lädt der Treiber-Manager den SQL Server-Treiber und ruft die SQLBrowse Verbinden-Funktion des Treibers mit denselben Argumenten auf, die sie von der Anwendung erhalten hat.

Hinweis

Wenn Sie eine Verbindung mit einem Datenquellenanbieter herstellen, der Windows-Authentifizierung unterstützt, sollten Sie anstelle von Benutzer-ID- und Kennwortinformationen im Verbindungszeichenfolge angebenTrusted_Connection=yes.

Der Treiber bestimmt, dass dies der erste Aufruf von SQLBrowse ist Verbinden und gibt die zweite Ebene der Verbindungsattribute zurück: Server, Benutzername, Kennwort, Anwendungsname und Arbeitsstations-ID. Für das Server-Attribut wird eine Liste gültiger Servernamen zurückgegeben. Der Rückgabecode von SQLBrowse Verbinden ist SQL_NEED_DATA. Hier ist die Suchergebniszeichenfolge:

"SERVER:Server={red,blue,green,yellow};UID:Login ID=?;PWD:Password=?;  
   *APP:AppName=?;*WSID:WorkStation ID=?;"  

Jedem Schlüsselwort (keyword) in der Suchergebniszeichenfolge folgt ein Doppelpunkt und ein oder mehrere Wörter vor dem Gleichheitszeichen. Bei diesen Wörtern handelt es sich um den benutzerfreundlichen Namen, den eine Anwendung zum Erstellen eines Dialogfelds verwenden kann. Die APP- und WSID-Schlüsselwort (keyword) werden einem Sternchen vorangestellt, was bedeutet, dass sie optional sind. Die SERVER-, UID- und PWD-Schlüsselwort (keyword) werden nicht durch ein Sternchen präfixiert. Die Werte müssen für sie in der nächsten Suchanforderungszeichenfolge angegeben werden. Der Wert für die SERVER-Schlüsselwort (keyword) kann einer der Server sein, die von SQLBrowse Verbinden oder einem vom Benutzer angegebenen Namen zurückgegeben werden.

Die Anwendung ruft SQLBrowse Verbinden erneut auf, wobei der grüne Server angegeben wird und die APP- und WSID-Schlüsselwort (keyword)s und die benutzerfreundlichen Namen nach jedem Schlüsselwort (keyword) weggelassen werden:

SQLBrowseConnect(hdbc, "SERVER=green;UID=Smith;PWD=Sesame;", SQL_NTS,  
                  BrowseResult, sizeof(BrowseResult), &BrowseResultLen);  

Der Treiber versucht, eine Verbindung mit dem grünen Server herzustellen. Wenn unfatale Fehler auftreten, z. B. ein fehlendes Schlüsselwort (keyword)-Wert-Paar, gibt SQLBrowse Verbinden SQL_NEED_DATA zurück und gibt Standard im gleichen Zustand wie vor dem Fehler zurück. Die Anwendung kann SQLGetDiagField oder SQLGetDiagRec aufrufen, um den Fehler zu ermitteln. Wenn die Verbindung erfolgreich ist, gibt der Treiber SQL_NEED_DATA zurück und gibt die Suchergebniszeichenfolge zurück:

"*DATABASE:Database={master,model,pubs,tempdb};  
   *LANGUAGE:Language={us_english,Franais};"  

Da die Attribute in dieser Zeichenfolge optional sind, kann sie von der Anwendung weggelassen werden. Die Anwendung muss jedoch SQLBrowse Verbinden erneut aufrufen. Wenn die Anwendung den Datenbanknamen und die Sprache auslassen möchte, gibt sie eine leere Suchanforderungszeichenfolge an. In diesem Beispiel wählt die Anwendung die Pubs-Datenbank aus und ruft SQLBrowse Verbinden ein letztes Mal auf, wobei die LANGUAGE Schlüsselwort (keyword) und das Sternchen vor der DATENBANK-Schlüsselwort (keyword) weggelassen werden:

SQLBrowseConnect(hdbc, "DATABASE=pubs;", SQL_NTS, BrowseResult,  
                  sizeof(BrowseResult), &BrowseResultLen);  

Da das DATABASE-Attribut das endgültige Verbindungsattribute ist, das vom Treiber benötigt wird, ist der Browservorgang abgeschlossen, die Anwendung ist mit der Datenquelle verbunden, und SQLBrowse Verbinden gibt SQL_SUCCESS zurück. SQLBrowse Verbinden gibt auch die vollständige Verbindungszeichenfolge als Suchergebniszeichenfolge zurück:

"DSN=MySQLServer;SERVER=green;UID=Smith;PWD=Sesame;DATABASE=pubs;"  

Die endgültige Verbindungszeichenfolge, die vom Treiber zurückgegeben werden, enthält weder die benutzerfreundlichen Namen nach jedem Schlüsselwort (keyword) noch optionale Schlüsselwort (keyword), die von der Anwendung nicht angegeben werden. Die Anwendung kann diese Zeichenfolge mit SQLDriver Verbinden verwenden, um eine erneute Verbindung mit der Datenquelle im aktuellen Verbindungshandle (nach dem Trennen) oder zum Herstellen einer Verbindung mit der Datenquelle in einem anderen Verbindungshandle herzustellen. Beispiel:

SQLDriverConnect(hdbc, hwnd, BrowseResult, SQL_NTS, ConnStrOut,  
                  sizeof(ConnStrOut), &ConnStrOutLen, SQL_DRIVER_NOPROMPT);