Vorgehensweise: Zuordnung von Handles und Herstellen einer Verbindung mit SQL Server (ODBC)

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

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

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

  3. Rufen Sie SQLAllocHandle mit dem HandleType SQL_HANDLE_ENV auf, um ODBC zu initialisieren und ein Umgebungshandle zuzuordnen.

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

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

  6. Rufen Sie SQLAllocHandle mit dem HandleType SQL_HANDLE_DBC auf, um ein Verbindungshandle zuzuordnen.

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

  8. Rufen Sie SQLConnect auf, um mithilfe einer vorhandenen Datenquelle eine Verbindung mit SQL Server herzustellen.

    Oder

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

    Eine minimale vollständige SQL Server-Verbindungszeichenfolge weist eine der beiden folgenden Formen auf:

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

    Wenn die Verbindungszeichenfolge nicht vollständig ist, kann SQLDriverConnect den Benutzer auffordern, die erforderlichen Informationen einzugeben. Dies wird durch den für den DriverCompletion-Parameter angegebenen Wert gesteuert.

    - Oder -

    Rufen Sie mehrmals SQLBrowseConnect in einer iterativen Weise auf, um die Verbindungszeichenfolge zu erstellen und eine Verbindung mit SQL Server herzustellen.

  9. Optional rufen Sie SQLGetInfo auf, um Treiberattribute und -verhalten für die SQL Server-Datenquelle zu erhalten.

  10. Ordnen Sie Anweisungen zu und verwenden Sie sie.

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

  12. Rufen Sie SQLFreeHandle mit dem HandleType SQL_HANDLE_DBC auf, um das Verbindungshandle freizugeben.

  13. Rufen Sie SQLFreeHandle mit dem HandleType SQL_HANDLE_ENV auf, um das Umgebungshandle wieder freizugeben.

SicherheitshinweisSicherheitshinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, fordern Sie die Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Die Anmeldeinformationen sollten nicht in einer Datei gespeichert werden. Wenn Sie die Anmeldeinformationen permanent speichern müssen, verschlüsseln Sie sie mit der Win32 Crypto-API.

Beispiel

In diesem Beispiel wird ein Aufruf von SQLDriverConnect zum Herstellen einer Verbindung mit einer Instanz von SQL Server gezeigt, bei der keine vorhandene ODBC-Datenquelle erforderlich ist. Die Übergabe einer unvollständigen Verbindungszeichenfolge an SQLDriverConnect führt dazu, dass der ODBC-Treiber den Benutzer dazu auffordert, 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);