Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az ODBC C adattípusok az alkalmazás adatainak tárolására használt C pufferek adattípusát jelzik.
Minden illesztőprogramnak támogatnia kell az összes C adattípust. Erre azért van szükség, mert minden illesztőprogramnak támogatnia kell az összes C típust, amelybe az általuk támogatott SQL-típusok konvertálhatók, és minden illesztőprogram legalább egy karakteres SQL-típust támogat. Mivel az SQL karaktertípus az összes C típusból és típusból konvertálható, minden illesztőnek támogatnia kell az összes C típust.
A C adattípus a SQLBindCol és SQLGetData függvényben van megadva a TargetType argumentummal, valamint a SQLBindParameter függvényben a ValueType argumentummal. Megadható úgy is, hogy meghívja SQLSetDescField egy ARD vagy APD SQL_DESC_CONCISE_TYPE mezőjének beállításához, vagy meghívhatja SQLSetDescRec a Type argumentummal (és szükség esetén a SubType argumentummal), valamint az DescriptorHandle argumentumot egy ARD vagy APD leírójára.
Az alábbi táblázatok a C adattípusok érvényes típusazonosítóit sorolják fel. A táblázat az egyes azonosítóknak és az adattípus definíciójának megfelelő ODBC C adattípust is felsorolja.
| C típusazonosító | ODBC C typedef | C típus |
|---|---|---|
| SQL_C_CHAR | SQLCHAR * | aláíratlan karakter * |
| SQL_C_WCHAR | SQLWCHAR * | wchar_t * |
| SQL_C_SSHORT[j] | SQLSMALLINT | rövid int |
| SQL_C_USHORT[j] | SQLUSMALLINT | aláíratlan rövid int |
| SQL_C_SLONG[j] | SQLINTEGER | hosszú int |
| SQL_C_ULONG[j] | SQLUINTEGER | aláíratlan hosszú int |
| SQL_C_FLOAT | SQLREAL | lebeg |
| SQL_C_DOUBLE | SQLDOUBLE, SQLFLOAT | dupla |
| SQL_C_BIT | SQLCHAR | aláíratlan karakter |
| SQL_C_STINYINT[j] | SQLSCHAR | aláírt karakter |
| SQL_C_UTINYINT[j] | SQLCHAR | aláíratlan karakter |
| SQL_C_SBIGINT | SQLBIGINT | _int64[h] |
| SQL_C_UBIGINT | SQLUBIGINT | aláíratlan _int64[h] |
| SQL_C_BINARY | SQLCHAR * | aláíratlan karakter * |
| SQL_C_BOOKMARK[i] | KÖNYVJELZŐ | aláíratlan hosszú int[d] |
| SQL_C_VARBOOKMARK | SQLCHAR * | aláíratlan karakter * |
| Minden C intervallum adattípus | SQL_INTERVAL_STRUCT | Tekintse meg a C intervallumstruktúra szakaszt a függelék későbbi részében. |
C típusazonosító SQL_C_TYPE_DATE[c]
ODBC C typedef SQL_DATE_STRUCT
C típusú
struct tagDATE_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
} DATE_STRUCT;[a]
C típusazonosító SQL_C_TYPE_TIME[c]
ODBC C typedef SQL_TIME_STRUCT
C típusú
struct tagTIME_STRUCT {
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
} TIME_STRUCT;[a]
C típusazonosító SQL_C_TYPE_TIMESTAMP[c]
ODBC C typedef SQL_TIMESTAMP_STRUCT
C típusú
struct tagTIMESTAMP_STRUCT {
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;[b]
} TIMESTAMP_STRUCT;[a]
C típusazonosító SQL_C_NUMERIC
ODBC C typedef SQL_NUMERIC_STRUCT
C típusú
struct tagSQL_NUMERIC_STRUCT {
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign[g];
SQLCHAR val[SQL_MAX_NUMERIC_LEN];[e], [f]
} SQL_NUMERIC_STRUCT;
C típusazonosító SQL_C_GUID
ODBC C typedef SQLGUID
C típusú
struct tagSQLGUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} SQLGUID;[k]
[a] A datetime C adattípusok év, hónap, nap, óra, perc és második mezőinek meg kell felelniük a Gergely-naptár korlátainak. (A függelék későbbi részében Gergely-naptár korlátozásai.)
[b] A törtmező értéke a másodperc milliárdosainak száma, és 0 és 999 999 999 közötti (1 milliárdnál kevesebb). Egy fél másodperc törtmezőjének értéke például 500 000 000, ezredmásodpercben (ezredmásodpercben) 1 000 000, egy másodperc milliomod része (egy mikroszekundum) 1000, a másodperc egymilliárdoda (egy nanoszekundum) pedig 1.
[c] Az ODBC 2-ben.x, a C dátum, idő és időbélyeg adattípus SQL_C_DATE, SQL_C_TIME és SQL_C_TIMESTAMP.
[d] Az ODBC 3*.x* alkalmazásoknak SQL_C_VARBOOKMARK kell használniuk, nem SQL_C_BOOKMARK. Ha egy ODBC 3*.x* alkalmazás egy ODBC 2-vel működik.x illesztőprogramot az ODBC 3*.x* illesztőprogram-kezelő SQL_C_VARBOOKMARK SQL_C_BOOKMARK.
[e] A szám a SQL_NUMERIC_STRUCT szerkezet val mezőjében van tárolva skálázott egész számként, kis endian módban (a bal szélső bájt a legkevésbé jelentős bájt). A 10.001 alap 10 szám például 4-es skálával 100010 egész számra van skálázva. Mivel ez 186AA hexadecimális formátumban, az érték SQL_NUMERIC_STRUCT lenne "AA 86 01 00 00 ... 00", a SQL_MAX_NUMERIC_LEN #defineáltal meghatározott bájtok számával.
A SQL_NUMERIC_STRUCTtovábbi információ: HOWTO: Numerikus adatok beolvasása SQL_NUMERIC_STRUCT.
[f] A SQL_C_NUMERIC adattípus pontossági és skálázási mezői az alkalmazásból történő bemenethez és az illesztőtől az alkalmazáshoz való kimenethez használatosak. Amikor az illesztő numerikus értéket ír a SQL_NUMERIC_STRUCT, a pontossági mező értékeként saját illesztőprogram-specifikus alapértelmezett értéket használ, és az alkalmazásleíró SQL_DESC_SCALE mezőjében lévő értéket használja (amely alapértelmezés szerint 0) a skálázási mezőhöz. Az alkalmazások az alkalmazásleíró SQL_DESC_PRECISION és SQL_DESC_SCALE mezőinek beállításával saját értékeket adhatnak meg a pontossághoz és a skálázáshoz.
[g] A jelmező 1, ha pozitív, 0, ha negatív.
[h] előfordulhat, hogy egyes fordítók nem _int64.
[i] _SQL_C_BOOKMARK elavult az ODBC 3*.x*-ban.
[j] _SQL_C_SHORT, SQL_C_LONG és SQL_C_TINYINT az ODBC-ben aláírt és aláíratlan típusok váltották fel: SQL_C_SSHORT és SQL_C_USHORT, SQL_C_SLONG és SQL_C_ULONG, valamint SQL_C_STINYINT és SQL_C_UTINYINT. OdBC 3*.x* illesztőprogram, amelynek az ODBC 2-vel kell működnie.x-alkalmazásoknak támogatniuk kell SQL_C_SHORT, SQL_C_LONG és SQL_C_TINYINT, mert amikor meghívják őket, az Illesztőprogram-kezelő átadja őket az illesztőprogramnak.
[k] SQL_C_GUID csak SQL_CHAR vagy SQL_WCHAR konvertálható.
Ez a szakasz az alábbi témakört tartalmazza.