핸들 할당 및 SQL Server에 연결(ODBC)

핸들을 할당하고 SQL Server에 연결하려면

  1. ODBC 헤더 파일 Sql.h, Sqlext.h, Sqltypes.h을 포함합니다.

  2. SQL Server 드라이버별 헤더 파일인 Odbcss.h를 포함합니다.

  3. SQL_HANDLE_ENV라는 HandleType으로 SQLAllocHandle을 호출하여 ODBC를 초기화하고 환경 핸들을 할당합니다.

  4. Attribute를 SQL_ATTR_ODBC_VERSION으로 설정하고 ValuePtr을 SQL_OV_ODBC3으로 설정해서 SQLSetEnvAttr을 호출하여 응용 프로그램에서 ODBC 3.x 형식 함수 호출을 사용할 것을 나타냅니다.

  5. 필요에 따라 SQLSetEnvAttr을 호출하여 다른 환경 옵션을 설정하거나 SQLGetEnvAttr을 호출하여 환경 옵션을 가져옵니다.

  6. SQL_HANDLE_DBC라는 HandleType으로 SQLAllocHandle을 호출하여 연결 핸들을 할당합니다.

  7. 필요에 따라 SQLSetConnectAttr을 호출하여 연결 옵션을 설정하거나 SQLGetConnectAttr을 호출하여 연결 옵션을 가져옵니다.

  8. SQLConnect를 호출하여 기존 데이터 원본을 통해 SQL Server에 연결합니다.

    또는

    SQLDriverConnect를 호출하여 연결 문자열을 통해 SQL Server에 연결합니다.

    최소 전체 SQL Server 연결 문자열은 다음 두 가지 형태 중 하나입니다.

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

    연결 문자열이 완료되지 않은 경우 SQLDriverConnect에서 필요한 정보를 확인할 수 있습니다. 이 작업은 DriverCompletion 매개 변수에 지정된 값으로 제어됩니다.

    - 또는 -

    반복해서 SQLBrowseConnect를 여러 번 호출하여 연결 문자열을 작성하고 SQL Server에 연결합니다.

  9. 필요에 따라 SQLGetInfo를 호출하여 SQL Server 데이터 원본에 대한 드라이버 특성과 동작을 가져옵니다.

  10. 문을 할당하고 사용합니다.

  11. SQLDisconnect를 호출하여 SQL Server에서 연결을 끊고 연결 핸들을 새 연결에 사용할 수 있게 합니다.

  12. SQL_HANDLE_DBC라는 HandleType으로 SQLFreeHandle을 호출하여 연결 핸들을 해제합니다.

  13. SQL_HANDLE_ENV라는 HandleType으로 SQLFreeHandle을 호출하여 환경 핸들을 해제합니다.

보안 정보보안 정보

가능하면 Windows 인증을 사용하십시오. Windows 인증을 사용할 수 없으면 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 자격 증명은 파일에 저장하지 않는 것이 좋습니다. 자격 증명을 유지하려면 Win32 crypto API를 사용하여 자격 증명을 암호화해야 합니다.

이 예에서는 SQLDriverConnect 호출을 통해 ODBC 데이터 원본을 요구하지 않고 SQL Server 인스턴스에 연결하는 방법을 보여 줍니다. 불완전한 연결 문자열을 SQLDriverConnect에 전달하면 ODBC 드라이버에서 누락된 정보를 입력하라는 메시지를 사용자에게 표시합니다.

#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);