Bagikan melalui


Tipe Data C

Jenis data ODBC C menunjukkan jenis data buffer C yang digunakan untuk menyimpan data dalam aplikasi.

Semua driver harus mendukung semua jenis data C. Ini diperlukan karena semua driver harus mendukung semua jenis C yang didukung SQL yang dapat dikonversi, dan semua driver mendukung setidaknya satu karakter jenis SQL. Karena karakter jenis SQL dapat dikonversi ke dan dari semua jenis C, semua driver harus mendukung semua jenis C.

Jenis data C ditentukan dalam SQLBindCol dan fungsi SQLGetData dengan argumen TargetType dan dalam fungsi SQLBindParameter dengan argumen ValueType. Ini juga dapat ditentukan dengan memanggil SQLSetDescField untuk mengatur bidang SQL_DESC_CONCISE_TYPE ARD atau APD, atau dengan memanggil SQLSetDescRec dengan argumen Tipe (dan argumen SubType jika diperlukan) dan argumen DescriptorHandle diatur ke handel ARD atau APD.

Tabel berikut ini mencantumkan pengidentifikasi tipe yang valid untuk jenis data C. Tabel ini juga mencantumkan tipe data ODBC C yang sesuai dengan setiap pengidentifikasi dan definisi jenis data ini.

Pengidentifikasi tipe C Typedef ODBC C Tipe C
SQL_C_CHAR SQLCHAR * karakter yang tidak ditandatangani *
SQL_C_WCHAR SQLWCHAR * wchar_t *
SQL_C_SSHORT[j] SQLSMALLINT int pendek
SQL_C_USHORT[j] SQLUSMALLINT int pendek yang tidak ditandatangani
SQL_C_SLONG[j] SQLINTEGER int panjang
SQL_C_ULONG[j] SQLUINTEGER int panjang yang tidak ditandatangani
SQL_C_FLOAT SQLREAL mengapung
SQL_C_DOUBLE SQLDOUBLE, SQLFLOAT dobel
SQL_C_BIT SQLCHAR karakter tidak ditandatangani
SQL_C_STINYINT[j] SQLSCHAR karakter yang ditandatangani
SQL_C_UTINYINT[j] SQLCHAR karakter tidak ditandatangani
SQL_C_SBIGINT SQLBIGINT _int64[h]
SQL_C_UBIGINT SQLUBIGINT _int64 tidak ditandatangani[h]
SQL_C_BINARY SQLCHAR * karakter yang tidak ditandatangani *
SQL_C_BOOKMARK[i] BOOKMARK unsigned long int[d]
SQL_C_VARBOOKMARK SQLCHAR * karakter yang tidak ditandatangani *
Semua jenis data interval C SQL_INTERVAL_STRUCT Lihat bagian Struktur Interval C , nanti di lampiran ini.

pengidentifikasi jenis C SQL_C_TYPE_DATE[c]

SQL_DATE_STRUCT ODBC C typedef

tipe C

struct tagDATE_STRUCT {  
   SQLSMALLINT year;  
   SQLUSMALLINT month;  
   SQLUSMALLINT day;    
} DATE_STRUCT;[a]  

pengidentifikasi jenis C SQL_C_TYPE_TIME[c]

SQL_TIME_STRUCT odbc C typedef

tipe C

struct tagTIME_STRUCT {  
   SQLUSMALLINT hour;  
   SQLUSMALLINT minute;  
   SQLUSMALLINT second;  
} TIME_STRUCT;[a]  

pengidentifikasi jenis C SQL_C_TYPE_TIMESTAMP[c]

SQL_TIMESTAMP_STRUCT ODBC C typedef

tipe C

struct tagTIMESTAMP_STRUCT {  
   SQLSMALLINT year;  
   SQLUSMALLINT month;  
   SQLUSMALLINT day;  
   SQLUSMALLINT hour;  
   SQLUSMALLINT minute;  
   SQLUSMALLINT second;  
   SQLUINTEGER fraction;[b]   
} TIMESTAMP_STRUCT;[a]  

SQL_C_NUMERIC pengidentifikasi jenis C

SQL_NUMERIC_STRUCT typedef ODBC C

tipe C

struct tagSQL_NUMERIC_STRUCT {  
   SQLCHAR precision;  
   SQLSCHAR scale;  
   SQLCHAR sign[g];  
   SQLCHAR val[SQL_MAX_NUMERIC_LEN];[e], [f]   
} SQL_NUMERIC_STRUCT;  

SQL_C_GUID pengidentifikasi jenis C

ODBC C typedef SQLGUID

tipe C

struct tagSQLGUID {  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data4[8];  
} SQLGUID;[k]  

[a] Nilai bidang tahun, bulan, hari, jam, menit, dan kedua dalam jenis data C tanggalwaktu harus sesuai dengan batasan kalender Gregorian. (Lihat batasan dari Kalender Gregorian nanti dalam lampiran ini.)

[b] Nilai bidang pecahan adalah jumlah miliaran detik dan berkisar antara 0 hingga 999.999.999 (1 kurang dari 1 miliar). Misalnya, nilai bidang pecahan selama setengah detik adalah 500.000.000, untuk seperseribu detik (satu milidetik) adalah 1.000.000, untuk sejuta detik (satu mikrodetik) adalah 1.000, dan untuk satu miliar detik (satu nanodetik) adalah 1.

[c] Dalam ODBC 2.x, jenis data tanggal, waktu, dan tanda waktu C SQL_C_DATE, SQL_C_TIME, dan SQL_C_TIMESTAMP.

[d] Aplikasi ODBC 3*.x* harus menggunakan SQL_C_VARBOOKMARK, bukan SQL_C_BOOKMARK. Ketika aplikasi ODBC 3*.x* bekerja dengan ODBC 2.driver x, Driver Manager ODBC 3*.x* akan memetakan SQL_C_VARBOOKMARK ke SQL_C_BOOKMARK.

[e] Angka disimpan di bidang val struktur SQL_NUMERIC_STRUCT sebagai bilangan bulat berskala, dalam mode little endian (byte paling kiri menjadi byte paling tidak signifikan). Misalnya, angka 10.001 basis 10, dengan skala 4, diskalakan ke bilangan bulat 100010. Karena ini adalah 186AA dalam format heksadesimal, nilai dalam SQL_NUMERIC_STRUCT adalah "AA 86 01 00 00 ... 00", dengan jumlah byte yang ditentukan oleh SQL_MAX_NUMERIC_LEN #define.

Untuk informasi selengkapnya tentang SQL_NUMERIC_STRUCT, lihat HOWTO: Mengambil Data Numerik dengan SQL_NUMERIC_STRUCT.

[f] Bidang presisi dan skala jenis data SQL_C_NUMERIC digunakan untuk input dari aplikasi dan untuk output dari driver ke aplikasi. Ketika driver menulis nilai numerik ke dalam SQL_NUMERIC_STRUCT, driver akan menggunakan default khusus drivernya sendiri sebagai nilai untuk bidang presisi , dan akan menggunakan nilai di bidang SQL_DESC_SCALE deskriptor aplikasi (yang default ke 0) untuk bidang skala. Aplikasi dapat memberikan nilainya sendiri untuk presisi dan skala dengan mengatur bidang SQL_DESC_PRECISION dan SQL_DESC_SCALE deskriptor aplikasi.

[g] Bidang tanda adalah 1 jika positif, 0 jika negatif.

[h] _int64 mungkin tidak disediakan oleh beberapa kompilator.

[i] _SQL_C_BOOKMARK tidak digunakan lagi di ODBC 3*.x*.

[j] _SQL_C_SHORT, SQL_C_LONG, dan SQL_C_TINYINT telah diganti di ODBC dengan jenis yang ditandatangani dan tidak ditandatangani: SQL_C_SSHORT dan SQL_C_USHORT, SQL_C_SLONG dan SQL_C_ULONG, serta SQL_C_STINYINT dan SQL_C_UTINYINT. Driver ODBC 3*.x* yang harus bekerja dengan ODBC 2.aplikasi x harus mendukung SQL_C_SHORT, SQL_C_LONG, dan SQL_C_TINYINT, karena ketika dipanggil, Driver Manager meneruskannya ke driver.

[k] SQL_C_GUID hanya dapat dikonversi ke SQL_CHAR atau SQL_WCHAR.

Bagian ini berisi topik berikut.

Lihat Juga

Jenis Data C di ODBC