Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ODBC C-datatypes geven het datatype C-buffers aan dat wordt gebruikt om data in de applicatie op te slaan.
Alle drivers moeten alle C-datatypes ondersteunen. Dit is vereist omdat alle drivers alle C-types moeten ondersteunen waarnaar SQL-types kunnen worden omgezet, en alle drivers ten minste één SQL-type van het teken ondersteunen. Omdat het teken-SQL-type kan worden omgezet naar en van alle C-types, moeten alle drivers alle C-types ondersteunen.
Het datatype C wordt gespecificeerd in de SQLBindCol- en SQLGetData-functies met het TargetType-argument en in de SQLBindParameter-functie met het ValueType-argument . Het kan ook worden gespecificeerd door SQLSetDescField aan te roepen om het SQL_DESC_CONCISE_TYPE veld van een ARD of APD in te stellen, of door SQLSetDescRec aan te roepen met het Type-argument (en het SubType-argument indien nodig) en het DescriptorHandle-argument dat is ingesteld op het handle van een ARD of APD.
De volgende tabellen geven geldige type-identificaties voor de C-datatypes weer weer. De tabel geeft ook het ODBC C-datatype weer dat overeenkomt met elke identifier en de definitie van dit datatype.
| C-type-id | ODBC C typedef | C-type |
|---|---|---|
| SQL_C_CHAR | SQLCHAR * | Onondertekende karakter * |
| SQL_C_WCHAR | SQLWCHAR * | wchar_t * |
| SQL_C_SSHORT[j] | SQLSMALLINT | Korte int |
| SQL_C_USHORT[j] | SQLUSMALLINT | Ongetekende korte int |
| SQL_C_SLONG[j] | SQLINTEGER | Long Int |
| SQL_C_ULONG[j] | SQLUINTEGER | Onondertekende lange int |
| SQL_C_FLOAT | SQLREAL | float |
| SQL_C_DOUBLE | SQLDOUBLE, SQLFLOAT | double |
| SQL_C_BIT | SQLCHAR | Onondertekende karakter |
| SQL_C_STINYINT[j] | SQLSCHAR | ondertekend char |
| SQL_C_UTINYINT[j] | SQLCHAR | Onondertekende karakter |
| SQL_C_SBIGINT | SQLBIGINT | _int64[h] |
| SQL_C_UBIGINT | SQLUBIGINT | Onondertekend _int64[h] |
| SQL_C_BINARY | SQLCHAR * | Onondertekende karakter * |
| SQL_C_BOOKMARK[i] | BLADWIJZER | Ongetekende lange int[d] |
| SQL_C_VARBOOKMARK | SQLCHAR * | Onondertekende karakter * |
| Alle C-interval datatypes | SQL_INTERVAL_STRUCT | Zie de sectie C-intervalstructuur , later in deze bijlage. |
C-type identificatie SQL_C_TYPE_DATE[c]
ODBC C typedef SQL_DATE_STRUCT
C-type
struct tagDATE_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;[a]
C-type identificatie SQL_C_TYPE_TIME[c]
ODBC C typedef SQL_TIME_STRUCT
C-type
struct tagTIME_STRUCT {
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;[a]
C-type identificatie SQL_C_TYPE_TIMESTAMP[c]
ODBC C typedef SQL_TIMESTAMP_STRUCT
C-type
struct tagTIMESTAMP_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;[b]
} TIMESTAMP_STRUCT;[a]
C-type identificatie SQL_C_NUMERIC
ODBC C typedef SQL_NUMERIC_STRUCT
C-type
struct tagSQL_NUMERIC_STRUCT {
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign[g];
SQLCHAR val[SQL_MAX_NUMERIC_LEN];[e], [f]
} SQL_NUMERIC_STRUCT;
C-type identificatie SQL_C_GUID
ODBC C typedef SQLGUID
C-type
struct tagSQLGUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} SQLGUID;[k]
[a] De waarden van de velden jaar, maand, dag, uur, minuut en seconde in de datatypes datum en tijd C moeten voldoen aan de beperkingen van de Gregoriaanse kalender. ( Zie Beperkingen van de Gregoriaanse Kalender later in deze bijlage.)
[b] De waarde van het breukveld is het aantal miljardsten van een seconde en varieert van 0 tot 999.999.999 (1 minder dan 1 miljard). Bijvoorbeeld, de waarde van het breukveld voor een halve seconde is 500.000.000, voor een duizendste van een seconde (één milliseconde) is 1.000.000, voor een miljoenste van een seconde (één microseconde) is dat 1.000, en voor een miljardste van een seconde (één nanoseconde) is het 1.
[c] In ODBC 2. x, de C-datum, tijd en tijdstempel zijn SQL_C_DATE, SQL_C_TIME en SQL_C_TIMESTAMP.
[d] ODBC 3*.x*-applicaties zouden SQL_C_VARBOOKMARK moeten gebruiken, niet SQL_C_BOOKMARK. Wanneer een ODBC 3*.x*-applicatie werkt met een ODBC 2. x driver, de ODBC 3*.x* Driver Manager zal SQL_C_VARBOOKMARK aan SQL_C_BOOKMARK toewijzen.
[e] Een getal wordt opgeslagen in het val-veld van de SQL_NUMERIC_STRUCT structuur als een geschaald geheel getal, in little endian-modus (waarbij de meest linkse byte de minst significante byte is). Bijvoorbeeld, het getal 10,001 basis 10, met een schaal van 4, wordt geschaald tot een geheel getal van 100010. Omdat dit 186AA in hexadecimale vorm is, zou de waarde in SQL_NUMERIC_STRUCT zijn "AA 86 01 00 00 ... 00", met het aantal bytes gedefinieerd door de SQL_MAX_NUMERIC_LEN #define.
Voor meer informatie over SQL_NUMERIC_STRUCT, zie HOWTO: Numerieke gegevens ophalen met SQL_NUMERIC_STRUCT.
[f] De precisie- en schaalvelden van het SQL_C_NUMERIC datatype worden gebruikt voor invoer van een applicatie en voor uitvoer van de driver naar de applicatie. Wanneer de driver een numerieke waarde in het SQL_NUMERIC_STRUCT schrijft, gebruikt hij zijn eigen driver-specifieke standaard als waarde voor het precisieveld , en gebruikt hij de waarde in het SQL_DESC_SCALE veld van de applicatiebeschrijvende (die standaard op 0 staat) voor het schaalveld . Een applicatie kan zijn eigen waarden voor precisie en schaal bieden door de SQL_DESC_PRECISION en SQL_DESC_SCALE velden van de applicatiebeschrijving in te stellen.
[g] Het tekenveld is 1 als positief, 0 als negatief.
[h] _int64 wordt misschien niet door sommige compilers geleverd.
[i] _SQL_C_BOOKMARK is afgeschaft in ODBC 3*.x*.
[j] _SQL_C_SHORT, SQL_C_LONG en SQL_C_TINYINT zijn in ODBC vervangen door gesigneerde en ongetekende types: SQL_C_SSHORT en SQL_C_USHORT, SQL_C_SLONG en SQL_C_ULONG, en SQL_C_STINYINT en SQL_C_UTINYINT. Een ODBC 3*.x* driver die zou moeten werken met ODBC 2. x-applicaties zouden SQL_C_SHORT, SQL_C_LONG en SQL_C_TINYINT moeten ondersteunen, omdat wanneer ze worden aangeroepen, de Driver Manager ze doorgeeft aan de driver.
[k] SQL_C_GUID kan alleen worden omgezet naar SQL_CHAR of SQL_WCHAR.
Deze sectie bevat het volgende onderwerp.