Aracılığıyla paylaş


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 kısıtlamalarına bakın.)

[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, C tarih, saat ve zaman damgası veri türleri SQL_C_DATE, SQL_C_TIME ve SQL_C_TIMESTAMP.

[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.

SQL_NUMERIC_STRUCThakkında daha fazla bilgi için bkz. howto: SQL_NUMERIC_STRUCTile Sayısal Verileri Alma .

[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