Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Типы данных ODBC C указывают тип данных буферов C, используемых для хранения данных в приложении.
Все драйверы должны поддерживать все типы данных C. Это необходимо, так как все драйверы должны поддерживать все типы C, в которые могут быть преобразованы типы SQL, и все драйверы поддерживают по крайней мере один тип 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 | длинная инта |
| 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 | подписанный символ |
| SQL_C_UTINYINT[j] | SQLCHAR | unsigned char |
| SQL_C_SBIGINT | SQLBIGINT | _int64[ч] |
| 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 SQL_C_TYPE_DATE[c]
typedef ODBC C SQL_DATE_STRUCT
типа C
struct tagDATE_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;[a]
идентификатор типа C SQL_C_TYPE_TIME[c]
typedef ODBC C SQL_TIME_STRUCT
типа C
struct tagTIME_STRUCT {
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;[a]
идентификатор типа C SQL_C_TYPE_TIMESTAMP[c]
типодеф ODBC C 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
typedef ODBC C 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] Значение поля дроби — это количество миллиардов секунд и диапазон от 0 до 999 999 999 999 999 (1 меньше 1 миллиарда). Например, значение поля дроби для половины секунды равно 500 000 000, для тысячной части секунды (один миллисекунд) составляет 1000 000, для миллионной части секунды (один микросекунды) составляет 1000, а для миллиарда секунд (один наносекунд) равен 1.
[c] В ODBC 2.x, типы данных даты, времени и метки времени C: SQL_C_DATE, SQL_C_TIME и SQL_C_TIMESTAMP.
Приложения ODBC 3*.x* должны использовать SQL_C_VARBOOKMARK, а не SQL_C_BOOKMARK. Когда приложение ODBC 3*.x* работает с ODBC 2. драйверx, диспетчер драйверов ODBC 3*.x* сопоставляет SQL_C_VARBOOKMARK с SQL_C_BOOKMARK.
[e] Число хранится в поле val структуры SQL_NUMERIC_STRUCT как масштабируемое целое число в малом байте (самый левый байт является наименее значимым байтом). Например, число 10.001 base 10 с масштабом 4 масштабируется до целого числа 100010. Так как это 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 были заменены в ODBC подписанными и неподписанными типами: SQL_C_SSHORT и SQL_C_USHORT, SQL_C_SLONG и SQL_C_ULONG, а также SQL_C_STINYINT и SQL_C_UTINYINT. Драйвер ODBC 3*.x*, который должен работать с ODBC 2.приложения x должны поддерживать SQL_C_SHORT, SQL_C_LONG и SQL_C_TINYINT, так как при вызове диспетчер драйверов передает их драйверу.
[k] SQL_C_GUID можно преобразовать только в SQL_CHAR или SQL_WCHAR.
Этот раздел содержит следующий раздел.