다음을 통해 공유


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

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

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

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

  3. SQL_HANDLE_ENV 을 사용하여 SQLAllocHandleHandleType 호출하여 ODBC를 초기화하고 환경 핸들을 할당합니다.

  4. SQL_ATTR_ODBC_VERSION 로 설정된 SQLSetEnvAttrAttribute 을 호출하고 ValuePtr SQL_OV_ODBC3 로 설정하여 애플리케이션이 ODBC 3.x 형식 함수 호출을 사용함을 나타냅니다.

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

  6. SQL_HANDLE_DBC 중 을 사용하여 SQLAllocHandleHandleType 호출하여 연결 핸들을 할당합니다.

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

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

    또는

    연결 문자열을 사용하여 SQL Server 연결하려면 SQLDriverConnect를 호출합니다.

    최소 전체 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 중 을 사용하여 SQLFreeHandleHandleType 호출하여 연결 핸들을 해제합니다.

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

중요

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

예제

이 예제에서는 기존 ODBC 데이터 원본을 요구하지 않고 SQL Server instance 연결하기 위한 호출 SQLDriverConnect 을 보여줍니다. 불완전한 연결 문자열을 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);