ODBC의 C 데이터 형식

ODBC는 애플리케이션 변수 및 해당 형식 식별자에 사용되는 C 데이터 형식을 정의합니다. 결과 집합 열 및 문 매개 변수에 바인딩된 버퍼에서 사용됩니다. 예를 들어 애플리케이션이 결과 집합 열에서 문자 형식으로 데이터를 검색하려고 하는 경우를 가정해 보겠습니다. SQLCHAR * 데이터 형식을 사용하여 변수를 선언하고 이 변수를 SQL_C_CHAR 형식 식별자를 사용하여 결과 집합 열에 바인딩합니다. C 데이터 형식 및 형식 식별자의 전체 목록은 부록 D: 데이터 형식을 참조 하세요.

또한 ODBC는 각 SQL 데이터 형식에서 C 데이터 형식으로의 기본 매핑을 정의합니다. 예를 들어 데이터 원본의 2 바이트 정수는 애플리케이션의 2 바이트 정수에 매핑됩니다. 기본 매핑을 사용하기 위해 애플리케이션은 SQL_C_DEFAULT 형식 식별자를 지정합니다. 그러나 상호 운용성상의 이유로 이 식별자를 사용하지는 않습니다.

ODBC 1.x 에 정의된 모든 정수 C 데이터 형식이 서명되었습니다. 서명되지 않은 C 데이터 형식 및 해당 형식 식별자가 ODBC 2.0에 추가되었습니다. 따라서 애플리케이션과 드라이버는 1.x 버전을 처리할 때 특히 주의해야 합니다.

C 데이터 형식 확장성

ODBC 3.8에서는 드라이버별 C 데이터 형식을 지정할 수 있습니다. 이렇게 하면 SQLBindCol, SQLGetData 또는 SQLBindParameter를 호출할 때 ODBC 애플리케이션에서 SQL 형식을 드라이버별 C 형식으로 바인딩할 수 있습니다. 기존 C 데이터 형식이 새 서버 데이터 형식을 올바르게 나타내지 않을 수 있으므로 새 서버 유형을 지원하는 데 유용할 수 있습니다. 드라이버별 C 형식을 사용하면 드라이버가 수행할 수 있는 변환 수가 증가할 수 있습니다.

예를 들어 DBMS(데이터베이스 관리 시스템)에서 표준 시간대 정보를 사용하여 날짜 및 시간을 나타내는 새 SQL 형식 인 DATETIMEOFFSET을 도입했다고 가정해 보겠습니다. ODBC에는 DATETIMEOFFSET에 해당하는 특정 C 형식이 없습니다. 애플리케이션은 DATETIMEOFFSET을 SQL_C_BINARY 바인딩하고 사용자 정의 데이터 형식으로 캐스팅해야 합니다. C 데이터 형식 확장성을 사용하는 ODBC 3.8부터 드라이버는 새 해당 C 형식을 정의할 수 있습니다. 예를 들어 새 SQL 형식 DATETIMEOFFSET의 경우 드라이버는 SQL_C_DATETIMEOFFSET 같은 새 해당 C 형식을 정의할 수 있습니다. 그런 다음, 애플리케이션은 새 SQL 형식을 드라이버별 C 형식으로 바인딩할 수 있습니다.

C 데이터 형식은 다음과 같이 드라이버에 정의됩니다.

  • 애플리케이션, ODBC 드라이버 및 드라이버 관리자에 대한 ODBC 준수 수준은 3.8 이상입니다.

  • 드라이버별 C 형식의 데이터 범위는 0x4000 0x7FFF 사이입니다.

  • 드라이버는 C 형식에 해당하는 데이터의 구조를 정의합니다. 드라이버별 SDK에서 이 작업을 수행할 수 있습니다.

드라이버 관리자는 0x4000 및 0x7FFF; 범위에 정의된 C 형식의 유효성을 검사하지 않습니다. 드라이버는 유효성 검사 및 모든 데이터 형식 변환을 수행합니다. 그러나 드라이버 관리자에 전달된 C 형식의 데이터 범위가 0x0000 0x3FFF 사이이거나 0x8000 0xFFFF 사이에 있는 경우 드라이버 관리자는 C 데이터 형식의 유효성을 검사합니다.

참고 항목

드라이버 관련 C 데이터 형식은 드라이버 설명서에 설명되어 있어야 합니다.

ODBC 준수 수준 3.8을 지정하기 위해 애플리케이션은 SQL_ATTR_ODBC_VERSION 특성이 SQL_OV_ODBC3_80 설정된 SQLSetEnvAttr호출합니다. 드라이버의 버전을 확인하기 위해 애플리케이션은 SQL_DRIVER_ODBC_VER 사용하여 SQLGetInfo를 호출합니다.

ODBC 3.8 에 대한 자세한 내용은 ODBC 3.8의 새로운 기능

참고 항목

C 데이터 형식