C Veri Türleri
ODBC C veri türleri, uygulamada verileri depolamak için kullanılan C arabelleklerinin veri türünü gösterir.
Tüm sürücülerin tüm C veri türlerini desteklemesi gerekir. Tüm sürücülerin, destekledikleri SQL türlerinin dönüştürülebileceği tüm C türlerini desteklemesi ve tüm sürücülerin en az bir karakterli SQL türünü desteklemesi gerektiğinden bu gereklidir. KARAKTER SQL türü tüm C türlerine ve bu türlerden dönüştürülebildiğinden, tüm sürücülerin tüm C türlerini desteklemesi gerekir.
C veri türü SQLBindCol ve SQLGetData işlevlerinde TargetType bağımsız değişkeniyle ve ValueType bağımsız değişkeniyle SQLBindParameter işlevinde belirtilir. Ayrıca, ARD veya APD'nin SQL_DESC_CONCISE_TYPE alanını ayarlamak için SQLSetDescField çağrılarak veya Tür bağımsız değişkeniyle (ve gerekirse SubType bağımsız değişkeniyle) SQLSetDescRec çağrılarak ve ARD veya APD tanıtıcısına ayarlanmış DescriptorHandle bağımsız değişkeni çağrılarak da belirtilebilir.
Aşağıdaki tablolarda C veri türleri için geçerli tür tanımlayıcıları listelenmiştir. Tabloda ayrıca her tanımlayıcıya karşılık gelen ODBC C veri türü ve bu veri türünün tanımı listelenir.
C türü tanımlayıcısı | ODBC C tür tanımı | C türü |
---|---|---|
SQL_C_CHAR | SQLCHAR * | işaretsiz karakter * |
SQL_C_WCHAR | SQLWCHAR * | wchar_t * |
SQL_C_SSHORT[j] | SQLSMALLINT | short int |
SQL_C_USHORT[j] | SQLUSMALLINT | işaretsiz kısa int |
SQL_C_SLONG[j] | SQLINTEGER | long int |
SQL_C_ULONG[j] | SQLUINTEGER | işaretsiz uzun int |
SQL_C_FLOAT | SQLREAL | yüzmek |
SQL_C_DOUBLE | SQLDOUBLE, SQLFLOAT | çift |
SQL_C_BIT | SQLCHAR | imzasız karakter |
SQL_C_STINYINT[j] | SQLSCHAR | imzalı karakter |
SQL_C_UTINYINT[j] | SQLCHAR | imzasız karakter |
SQL_C_SBIGINT | SQLBIGINT | _int64[h] |
SQL_C_UBIGINT | SQLUBIGINT | imzasız _int64[h] |
SQL_C_BINARY | SQLCHAR * | işaretsiz karakter * |
SQL_C_BOOKMARK[i] | YER İŞARETİ | unsigned long int[d] |
SQL_C_VARBOOKMARK | SQLCHAR * | işaretsiz karakter * |
Tüm C aralığı veri türleri | SQL_INTERVAL_STRUCT | Bu ekin devamında C Aralık Yapısı bölümüne bakın. |
C türü tanımlayıcı SQL_C_TYPE_DATE[c]
ODBC C tür tanımı SQL_DATE_STRUCT
C türü
struct tagDATE_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;[a]
C türü tanımlayıcı SQL_C_TYPE_TIME[c]
ODBC C tür tanımı SQL_TIME_STRUCT
C türü
struct tagTIME_STRUCT {
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;[a]
C türü tanımlayıcı SQL_C_TYPE_TIMESTAMP[c]
ODBC C tür tanımı SQL_TIMESTAMP_STRUCT
C türü
struct tagTIMESTAMP_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;[b]
} TIMESTAMP_STRUCT;[a]
C türü tanımlayıcı SQL_C_NUMERIC
ODBC C tür tanımı SQL_NUMERIC_STRUCT
C türü
struct tagSQL_NUMERIC_STRUCT {
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign[g];
SQLCHAR val[SQL_MAX_NUMERIC_LEN];[e], [f]
} SQL_NUMERIC_STRUCT;
C türü tanımlayıcı SQL_C_GUID
SQLGUID ODBC C tür tanımı
C türü
struct tagSQLGUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} SQLGUID;[k]
[a] C tarih saat veri türlerindeki yıl, ay, gün, saat, dakika ve ikinci alanların değerleri Gregoryen takvimin kısıtlamalarına uygun olmalıdır. (Bu ekin devamında gregoryen takvim
[b] Kesir alanının değeri saniyenin milyarda biri sayısıdır ve 0 ile 999.999.999 (1 milyardan az) arasında değişir. Örneğin, yarım saniye için kesir alanının değeri 500.000.000, saniyenin binde biri (bir milisaniye) için 1.000.000, saniyenin milyonda biri (bir mikrosaniye) 1.000 ve saniyenin milyarda biri için (bir nanosaniye) 1'dir.
[c] ODBC 2'de. x
[d] ODBC 3*.x* uygulamaları SQL_C_BOOKMARK değil SQL_C_VARBOOKMARK kullanmalıdır. ODBC 3*.x* uygulaması ODBC 2 ile çalıştığında.x sürücüsü, ODBC 3*.x* Sürücü Yöneticisi SQL_C_VARBOOKMARK SQL_C_BOOKMARK eşler.
[e] Sayı, SQL_NUMERIC_STRUCT yapısının val alanında küçük endian modunda (en soldaki bayt en az önemli bayt) ölçeklendirilmiş bir tamsayı olarak depolanır. Örneğin, ölçeği 4 olan 10,001 taban 10 sayısı 100010 tamsayısına ölçeklendirilir. Bu onaltılık biçimde 186AA olduğundan, SQL_NUMERIC_STRUCT değeri "AA 86 01 00 00 ... 00", SQL_MAX_NUMERIC_LEN #definetarafından tanımlanan bayt sayısıyla.
[f] SQL_C_NUMERIC veri türünün duyarlık ve ölçek alanları, bir uygulamadan giriş ve sürücüden uygulamaya çıkış için kullanılır. Sürücü SQL_NUMERIC_STRUCT sayısal bir değer yazdığında, duyarlık alanının değeri olarak kendi sürücüye özgü varsayılan değerini kullanır ve ölçek alanı için uygulama tanımlayıcısının SQL_DESC_SCALE alanındaki değeri kullanır (varsayılan değer 0'dır). Uygulama, uygulama tanımlayıcısının SQL_DESC_PRECISION ve SQL_DESC_SCALE alanlarını ayarlayarak duyarlık ve ölçeklendirme için kendi değerlerini sağlayabilir.
[g] İşaret alanı pozitifse 1, negatifse 0 olur.
[h] _int64 bazı derleyiciler tarafından sağlanmayabilir.
[i] _SQL_C_BOOKMARK ODBC 3*.x* içinde kullanım dışı bırakıldı.
[j] _SQL_C_SHORT, SQL_C_LONG ve SQL_C_TINYINT ODBC'de imzalı ve imzasız türler tarafından değiştirildi: SQL_C_SSHORT ve SQL_C_USHORT, SQL_C_SLONG ve SQL_C_ULONG, SQL_C_STINYINT ve SQL_C_UTINYINT. ODBC 2 ile çalışması gereken bir ODBC 3*.x* sürücüsü.x uygulamaları SQL_C_SHORT, SQL_C_LONG ve SQL_C_TINYINT desteklemelidir, çünkü çağrıldıklarında Sürücü Yöneticisi bunları sürücüye geçirir.
[k] SQL_C_GUID yalnızca SQL_CHAR veya SQL_WCHAR dönüştürülebilir.
Bu bölüm aşağıdaki konuyu içerir.
Ayrıca Bkz.
ODBC C Veri Türlerini