데이터 버퍼 형식

버퍼의 C 데이터 형식은 애플리케이션에서 지정합니다. 단일 변수를 사용하면 애플리케이션에서 변수를 할당할 때 발생합니다. 제네릭 메모리( 즉, void 형식의 포인터가 가리키는 메모리)를 사용하면 애플리케이션이 메모리를 특정 형식으로 캐스팅할 때 발생합니다. 드라이버는 다음 두 가지 방법으로 이 형식을 검색합니다.

  • 데이터 버퍼 형식 인수입니다. SQLBindCol에서 TargetValuePtr로 바인딩된 버퍼와 같은 매개 변수 값 및 결과 집합 데이터를 전송하는 데 사용되는 버퍼에는 일반적으로 SQLBindColTargetType 인수와 같은 연결된 형식 인수가 있습니다. 이 인수에서 애플리케이션은 버퍼의 형식에 해당하는 C 형식 식별자를 전달합니다. 예를 들어 SQLBindCol에 대한 다음 호출에서 SQL_C_TYPE_DATE 값은 날짜 버퍼가 SQL_DATE_STRUCT 있음을 드라이버에 알려줍니다.

    SQL_DATE_STRUCT Date;  
    SQLINTEGER  DateInd;  
    SQLBindCol(hstmt, 1, SQL_C_TYPE_DATE, &Date, 0, &DateInd);  
    

    형식 식별자에 대한 자세한 내용은 이 섹션의 뒷부분에 있는 ODBC 섹션의 데이터 형식을 참조하세요.

  • 미리 정의된 형식입니다. SQLGetInfo의 InfoValuePtr 인수가 가리키는 버퍼와 같은 옵션 또는 특성을 보내고 검색하는 데 사용되는 버퍼에는 지정된 옵션에 따라 달라지는 고정 형식이 있습니다. 드라이버는 데이터 버퍼가 이 형식이라고 가정합니다. 이 유형의 버퍼를 할당하는 것은 애플리케이션의 책임입니다. 예를 들어 SQLGetInfo대한 다음 호출에서 드라이버는 버퍼가 32비트 정수라고 가정합니다. 이는 SQL_STRING_FUNCTIONS 옵션에 필요한 값이기 때문입니다.

    SQLUINTEGER StringFuncs;  
    SQLGetInfo(hdbc, SQL_STRING_FUNCTIONS, (SQLPOINTER) &StringFuncs, 0,  
                NULL);  
    

드라이버는 C 데이터 형식을 사용하여 버퍼의 데이터를 해석합니다.