Handles zuordnen und Verbindung zu SQL Server (ODBC) herstellen

So weisen Sie Handles zu und stellen eine Verbindung mit SQL Server her

  1. Schließen Sie die ODBC-Headerdateien Sql.h, Sqlext.h, Sqltypes.h ein.

  2. Schließen Sie die treiberspezifische SQL Server-Headerdatei odbcss.h ein.

  3. Rufen Sie SQLAllocHandle mit einer HandleType von SQL_HANDLE_ENV auf, um ODBC zu initialisieren und ein Umgebungshandle zuzuweisen.

  4. Rufen Sie SQLSetEnvAttr auf Attribute SQL_ATTR_ODBC_VERSION ValuePtr und legen Sie auf SQL_OV_ODBC3 fest, um anzugeben, dass die Anwendung ODBC 3.x-Format-Funktionsaufrufe verwendet.

  5. Rufen Sie optional SQLSetEnvAttr auf, um andere Umgebungsoptionen festzulegen, oder rufen Sie SQLGetEnvAttr auf, um Umgebungsoptionen abzurufen.

  6. Rufen Sie SQLAllocHandle mit einer HandleType von SQL_HANDLE_DBC auf, um ein Verbindungshandle zuzuweisen.

  7. Rufen Sie optional SQLSetConnectAttr auf, um Verbindungsoptionen festzulegen, oder rufen Sie SQLGetConnectAttr auf, um Verbindungsoptionen abzurufen.

  8. Rufen Sie SQLConnect auf, um eine vorhandene Datenquelle zum Herstellen einer Verbindung mit SQL Server zu verwenden.

    Oder

    Rufen Sie SQLDriverConnect auf, um eine Verbindung mit SQL Server herzustellen.

    Eine mindestens vollständige SQL Server-Verbindungszeichenfolge weist eine von zwei Formen auf:

    DSN=dsn_name;Trusted_connection=yes;  
    DRIVER={SQL Server Native Client 10.0};SERVER=server;Trusted_connection=yes;  
    

    Wenn die Verbindungszeichenfolge nicht abgeschlossen ist, SQLDriverConnect können Sie die erforderlichen Informationen anfordern. Dies wird durch den für den DriverCompletion-Parameter angegebenen Wert gesteuert.

    -oder-

    Rufen Sie SQLBrowseConnect mehrmals iterativ auf, um die Verbindungszeichenfolge zu erstellen und eine Verbindung mit SQL Server herzustellen.

  9. Rufen Sie optional SQLGetInfo auf, um Treiberattribute und -verhalten für die SQL Server-Datenquelle abzurufen.

  10. Zuweisen und Verwenden von Anweisungen.

  11. Rufen Sie SQLDisconnect auf, um die Verbindung mit SQL Server zu trennen und den Verbindungshandle für eine neue Verbindung verfügbar zu machen.

  12. Rufen Sie SQLFreeHandle mit einer HandleType von SQL_HANDLE_DBC auf, um den Verbindungshandle frei zu geben.

  13. Rufen Sie SQLFreeHandle mit einer HandleType von SQL_HANDLE_ENV auf, um die Umgebungshandle frei zu geben.

Von Bedeutung

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, werden Benutzer aufgefordert, ihre Anmeldeinformationen zur Laufzeit einzugeben. Vermeiden Sie das Speichern von Anmeldeinformationen in einer Datei. Wenn Sie Anmeldeinformationen beibehalten müssen, sollten Sie sie mit der Win32-Krypto-API verschlüsseln.

Beispiel

Dieses Beispiel zeigt einen Aufruf zum SQLDriverConnect Herstellen einer Verbindung mit einer Instanz von SQL Server, ohne dass eine vorhandene ODBC-Datenquelle erforderlich ist. Durch das Übergeben einer unvollständigen Verbindungszeichenfolge an SQLDriverConnectden ODBC-Treiber wird der Benutzer aufgefordert, die fehlenden Informationen einzugeben.

#define MAXBUFLEN   255  
  
SQLHENV      henv = SQL_NULL_HENV;  
SQLHDBC      hdbc1 = SQL_NULL_HDBC;  
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;  
  
SQLCHAR      ConnStrIn[MAXBUFLEN] =  
         "DRIVER={SQL Server Native Client 10.0};SERVER=MyServer";  
  
SQLCHAR      ConnStrOut[MAXBUFLEN];  
SQLSMALLINT   cbConnStrOut = 0;  
  
// Make connection without data source. Ask that driver   
// prompt if insufficient information. Driver returns  
// SQL_ERROR and application prompts user  
// for missing information. Window handle not needed for  
// SQL_DRIVER_NOPROMPT.  
retcode = SQLDriverConnect(hdbc1,      // Connection handle  
                  NULL,         // Window handle  
                  ConnStrIn,      // Input connect string  
                  SQL_NTS,         // Null-terminated string  
                  ConnStrOut,      // Address of output buffer  
                  MAXBUFLEN,      // Size of output buffer  
                  &cbConnStrOut,   // Address of output length  
                  SQL_DRIVER_PROMPT);