핸들 할당 및 SQL Server에 연결(ODBC)
핸들을 할당하고 SQL Server에 연결하려면
ODBC 헤더 파일 Sql.h, Sqlext.h, Sqltypes.h을 포함합니다.
SQL Server 드라이버별 헤더 파일인 Odbcss.h를 포함합니다.
SQL_HANDLE_ENV 을 사용하여 SQLAllocHandle 을
HandleType
호출하여 ODBC를 초기화하고 환경 핸들을 할당합니다.SQL_ATTR_ODBC_VERSION 로 설정된 SQLSetEnvAttr
Attribute
을 호출하고ValuePtr
SQL_OV_ODBC3 로 설정하여 애플리케이션이 ODBC 3.x 형식 함수 호출을 사용함을 나타냅니다.필요에 따라 SQLSetEnvAttr 를 호출하여 다른 환경 옵션을 설정하거나 SQLGetEnvAttr 를 호출하여 환경 옵션을 가져옵니다.
SQL_HANDLE_DBC 중 을 사용하여 SQLAllocHandle 을
HandleType
호출하여 연결 핸들을 할당합니다.필요에 따라 SQLSetConnectAttr 를 호출하여 연결 옵션을 설정하거나 SQLGetConnectAttr 를 호출하여 연결 옵션을 가져옵니다.
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 연결합니다.
필요에 따라 SQLGetInfo를 호출하여 SQL Server 데이터 원본에 대한 드라이버 특성 및 동작을 가져옵니다.
문을 할당하고 사용합니다.
SQLDisconnect를 호출하여 SQL Server 연결을 끊고 새 연결에 연결 핸들을 사용할 수 있도록 합니다.
SQL_HANDLE_DBC 중 을 사용하여 SQLFreeHandle 을
HandleType
호출하여 연결 핸들을 해제합니다.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);