C 데이터 형식
ODBC C 데이터 형식은 애플리케이션에 데이터를 저장하는 데 사용되는 C 버퍼의 데이터 형식을 나타냅니다.
모든 드라이버는 모든 C 데이터 형식을 지원해야 합니다. 모든 드라이버는 지원하는 SQL 형식을 변환할 수 있는 모든 C 형식을 지원해야 하고 모든 드라이버는 하나 이상의 문자 SQL 형식을 지원해야 하기 때문에 필요합니다. SQL 형식을 모든 C 형식으로 변환할 수 있으므로 모든 드라이버는 모든 C 형식을 지원해야 합니다.
C 데이터 형식은
다음 표에서는 C 데이터 형식에 대한 유효한 형식 식별자를 나열합니다. 표에는 각 식별자에 해당하는 ODBC C 데이터 형식과 이 데이터 형식의 정의도 나열되어 있습니다.
C 형식 식별자 | ODBC C 형식 정의 | C 형식 |
---|---|---|
SQL_C_CHAR | SQLCHAR * | unsigned char * |
SQL_C_WCHAR | SQLWCHAR * | wchar_t * |
SQL_C_SSHORT[j] | SQLSMALLINT | short int |
SQL_C_USHORT[j] | SQLUSMALLINT | unsigned short int |
SQL_C_SLONG[j] | SQLINTEGER | long int |
SQL_C_ULONG[j] | SQLUINTEGER | unsigned long int |
SQL_C_FLOAT | SQLREAL | 뜨다 |
SQL_C_DOUBLE | SQLDOUBLE, SQLFLOAT | 배 |
SQL_C_BIT | SQLCHAR | unsigned char |
SQL_C_STINYINT[j] | SQLSCHAR | signed char |
SQL_C_UTINYINT[j] | SQLCHAR | unsigned char |
SQL_C_SBIGINT | SQLBIGINT | _int64[h] |
SQL_C_UBIGINT | SQLUBIGINT | unsigned _int64[h] |
SQL_C_BINARY | SQLCHAR * | unsigned char * |
SQL_C_BOOKMARK[i] | 책갈피 | unsigned long int[d] |
SQL_C_VARBOOKMARK | SQLCHAR * | unsigned char * |
모든 C 간격 데이터 형식 | SQL_INTERVAL_STRUCT | 이 부록의 뒷부분에 있는 C 간격 구조 섹션을 참조하세요. |
C 형식 식별자 SQL_C_TYPE_DATE[c]
ODBC C typedef SQL_DATE_STRUCT
C 형식
struct tagDATE_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;[a]
C 형식 식별자 SQL_C_TYPE_TIME[c]
ODBC C typedef SQL_TIME_STRUCT
C 형식
struct tagTIME_STRUCT {
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;[a]
C 형식 식별자 SQL_C_TYPE_TIMESTAMP[c]
ODBC C typedef SQL_TIMESTAMP_STRUCT
C 형식
struct tagTIMESTAMP_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;[b]
} TIMESTAMP_STRUCT;[a]
C 형식 식별자 SQL_C_NUMERIC
ODBC C typedef SQL_NUMERIC_STRUCT
C 형식
struct tagSQL_NUMERIC_STRUCT {
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign[g];
SQLCHAR val[SQL_MAX_NUMERIC_LEN];[e], [f]
} SQL_NUMERIC_STRUCT;
C 형식 식별자 SQL_C_GUID
ODBC C typedef SQLGUID
C 형식
struct tagSQLGUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} SQLGUID;[k]
[a] datetime C 데이터 형식의 연도, 월, 일, 시간, 분 및 두 번째 필드의 값은 그레고리오력의 제약 조건을 따라야 합니다. (이 부록의 뒷부분에 있는 그레고리오력
[b] 분수 필드의 값은 1초의 수십억 번째 수이며 0에서 999,999,999(10억 미만)의 범위입니다. 예를 들어 반초의 분수 필드 값은 500,000,000이고, 1/1000초(1밀리초)는 1,000,000이고, 100만분의 1(마이크로초)은 1,000이며, 1/10억분의 1(1나노초)입니다.
[c] ODBC 2에서. x
[d] ODBC 3*.x* 애플리케이션은 SQL_C_BOOKMARK 아니라 SQL_C_VARBOOKMARK 사용해야 합니다. ODBC 3*.x* 애플리케이션이 ODBC 2에서 작동하는 경우 x 드라이버를
[e] 소수점수는 SQL_NUMERIC_STRUCT 구조체의 val 필드에 크기가 조정된 정수로, little endian 모드(가장 왼쪽 바이트는 최단 바이트)로 저장됩니다. 예를 들어 소수 자릿수가 4인 숫자 10.001 base 10은 100010의 정수로 조정됩니다. 16진수 형식의 186AA이므로 SQL_NUMERIC_STRUCT 값은 "AA 86 01 00 00 ... 00"입니다. SQL_MAX_NUMERIC_LEN #define정의한 바이트 수입니다.
SQL_NUMERIC_STRUCT대한 자세한 내용은 HOWTO: SQL_NUMERIC_STRUCT사용하여 숫자 데이터 검색을 참조하세요.
[f] SQL_C_NUMERIC 데이터 형식의 전체 자릿수 및 배율 필드는 애플리케이션의 입력 및 드라이버에서 애플리케이션으로의 출력에 사용됩니다. 드라이버가 SQL_NUMERIC_STRUCT 숫자 값을 쓰면 해당 드라이버별 기본값을 전체 자릿수 필드의 값으로 사용하고, 배율 필드에 애플리케이션 설명자의 SQL_DESC_SCALE 필드(기본값은 0)의 값을 사용합니다. 애플리케이션은 애플리케이션 설명자의 SQL_DESC_PRECISION 및 SQL_DESC_SCALE 필드를 설정하여 정밀도 및 크기 조정에 대한 고유한 값을 제공할 수 있습니다.
[g] 부호 필드는 양수이면 1이고 음수이면 0입니다.
[h] _int64 일부 컴파일러에서 제공되지 않을 수 있습니다.
[i] _SQL_C_BOOKMARK ODBC 3*.x*에서 더 이상 사용되지 않습니다.
[j] _SQL_C_SHORT, SQL_C_LONG 및 SQL_C_TINYINT SQL_C_SSHORT 및 SQL_C_USHORT, SQL_C_SLONG 및 SQL_C_ULONG, SQL_C_STINYINT 및 SQL_C_UTINYINT 서명 및 서명되지 않은 형식으로 ODBC에서 대체되었습니다. ODBC 2에서 작동해야 하는 ODBC 3*.x* 드라이버입니다.x 애플리케이션은 호출되면 드라이버 관리자가 드라이버에 전달하므로 SQL_C_SHORT, SQL_C_LONG 및 SQL_C_TINYINT 지원해야 합니다.
[k] SQL_C_GUID SQL_CHAR 또는 SQL_WCHAR 변환할 수 있습니다.
이 섹션에는 다음 항목이 포함되어 있습니다.
참고 항목
ODBC C 데이터 형식