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
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 |
pengidentifikasi jenis C SQL_C_TYPE_DATE[c]
SQL_DATE_STRUCT
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
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
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
[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