C 資料類型
ODBC C 資料類型表示用來將資料儲存在應用程式中的 C 緩衝區數據類型。
所有驅動程式都必須支援所有 C 資料類型。 這是必要的,因為所有驅動程式都必須支援可轉換 SQL 類型的所有 C 類型,而且所有驅動程式都支援至少一個字元的 SQL 類型。 因為字元 SQL 類型可以轉換成所有 C 類型,因此所有驅動程式都必須支援所有 C 類型。
C 數據類型是在 sqlBindCol
下表列出 C 數據類型的有效類型識別碼。 數據表也會列出對應至每個標識碼和此數據類型定義的 ODBC C 資料類型。
C 類型識別碼 | ODBC C typedef | 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 | 帶正負號的字元 |
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] 分數位段的值是秒數的十億分之一,範圍從 0 到 999,999,999(1 小於 10 億)。 例如,半秒的分數位段值為 500,000,000,000 秒,以 1,000,000 秒為單位的千分之一秒(一毫秒)為 1,000 秒,而十億分之一秒 (一奈秒) 為 1。
[c] 在 ODBC 2 中。x、C 日期、時間和時間戳數據類型是SQL_C_DATE、SQL_C_TIME和SQL_C_TIMESTAMP。
[d] 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] 數位會儲存在SQL_NUMERIC_STRUCT結構的 val 字段中,以小到小的模式儲存(最左邊的位元組是最小有效位元組)。 例如,數位 10.001 基底 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時,它會使用自己的驅動程式特定預設值做為 精確度 字段的值,而且它會使用應用程式描述元 (預設值為 0) SQL_DESC_SCALE 字段中的值,小數位數 字段。 應用程式可以藉由設定應用程式描述元的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 2 使用的 ODBC 3*.x* 驅動程式。x 應用程式應該支援SQL_C_SHORT、SQL_C_LONG和SQL_C_TINYINT,因為呼叫它們時,驅動程式管理員會將其傳遞至驅動程式。
[k] SQL_C_GUID只能轉換成SQL_CHAR或SQL_WCHAR。
本節包含下列主題。
另請參閱
ODBC 中的