Freigeben über


C-Datentypen

ODBC C-Datentypen geben den Datentyp von C-Puffern an, die zum Speichern von Daten in der Anwendung verwendet werden.

Alle Treiber müssen alle C-Datentypen unterstützen. Dies ist erforderlich, da alle Treiber alle C-Typen unterstützen müssen, in die SQL-Typen konvertiert werden können, und alle Treiber unterstützen mindestens einen SQL-Zeichentyp. Da der SQL-Zeichentyp in und von allen C-Typen konvertiert werden kann, müssen alle Treiber alle C-Typen unterstützen.

Der Datentyp C wird im SQLBindCol- und SQLGetData--Funktionen mit dem Argument TargetType und in der SQLBindParameter- funktion mit dem argument ValueType angegeben. Sie kann auch durch Aufrufen von SQLSetDescField- angegeben werden, um das SQL_DESC_CONCISE_TYPE Feld eines ARD- oder APD festzulegen, oder durch Aufrufen SQLSetDescRec mit dem Argument Type Argument (und dem SubType Argument bei Bedarf) und dem argument DescriptorHandle argument set to the handle of an ARD oder APD.

In den folgenden Tabellen sind gültige Typbezeichner für die C-Datentypen aufgeführt. In der Tabelle werden auch der ODBC-C-Datentyp aufgeführt, der den einzelnen Bezeichnern und der Definition dieses Datentyps entspricht.

C-Typbezeichner ODBC-C-Typdef C-Typ
SQL_C_CHAR SQLCHAR * nicht signiertes Zeichen *
SQL_C_WCHAR SQLWCHAR * wchar_t *
SQL_C_SSHORT[j] SQLSMALLINT short int
SQL_C_USHORT[j] SQLUSMALLINT unsigned short int
SQL_C_SLONG[j] SQLINTEGER long int
SQL_C_ULONG[j] SQLUINTEGER unsigned long int
SQL_C_FLOAT SQLREAL schweben
SQL_C_DOUBLE SQLDOUBLE, SQLFLOAT doppelt
SQL_C_BIT SQLCHAR Nicht signiertes Zeichen
SQL_C_STINYINT[j] SQLSCHAR signiertes Zeichen
SQL_C_UTINYINT[j] SQLCHAR Nicht signiertes Zeichen
SQL_C_SBIGINT SQLBIGINT _int64[h]
SQL_C_UBIGINT SQLUBIGINT nicht signierte _int64[h]
SQL_C_BINARY SQLCHAR * nicht signiertes Zeichen *
SQL_C_BOOKMARK[i] LESEZEICHEN unsigned long int[d]
SQL_C_VARBOOKMARK SQLCHAR * nicht signiertes Zeichen *
Alle C-Intervall-Datentypen SQL_INTERVAL_STRUCT Weitere Informationen finden Sie im Abschnitt C-Intervallstruktur weiter unten in diesem Anhang.

C-Typbezeichner SQL_C_TYPE_DATE[c]

ODBC-C-Typdef- SQL_DATE_STRUCT

C-Typ

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

C-Typbezeichner SQL_C_TYPE_TIME[c]

ODBC-C-Typdef- SQL_TIME_STRUCT

C-Typ

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

C-Typbezeichner SQL_C_TYPE_TIMESTAMP[c]

ODBC-C-Typdef- SQL_TIMESTAMP_STRUCT

C-Typ

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

C-Typbezeichner SQL_C_NUMERIC

ODBC-C-Typdef- SQL_NUMERIC_STRUCT

C-Typ

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

C-Typbezeichner SQL_C_GUID

ODBC C typedef SQLGUID

C-Typ

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

[a] Die Werte des Datentyps "Jahr", "Monat", "Tag", "Stunde", "Minute" und "sekunde" in den Datentypen "datetime C" müssen den Einschränkungen des gregorianischen Kalenders entsprechen. (Siehe Einschränkungen des gregorianischen Kalenders weiter unten in diesem Anhang.)

[b] Der Wert des Bruchfelds ist die Anzahl der Milliarden pro Sekunde und reicht von 0 bis 999.999.999 (1 unter 1 Milliarde). Beispielsweise ist der Wert des Bruchfelds für eine halbe Sekunde 500.000.000, für ein Tausendstel einer Sekunde (eine Millisekunden) 1.000.000, für einen Millionstel einer Sekunde (ein Mikrosekunden) 1.000, und für einen Milliardenstel einer Sekunde (ein Nanosekunden) ist 1.

[c] In ODBC 2.xsind die Datentypen C-Datum, Uhrzeit und Zeitstempel SQL_C_DATE, SQL_C_TIME und SQL_C_TIMESTAMP.

[d] ODBC 3*.x*-Anwendungen sollten SQL_C_VARBOOKMARK und nicht SQL_C_BOOKMARK verwenden. Wenn eine ODBC 3*.x*-Anwendung mit einem ODBC 2 funktioniert.x Treiber wird der ODBC 3*.x*-Treiber-Manager SQL_C_VARBOOKMARK SQL_C_BOOKMARK zugeordnet.

[e] Eine Zahl wird im Val Feld der SQL_NUMERIC_STRUCT Struktur als skalierte ganze Zahl gespeichert, im kleinen Endmodus (das äußerst linke Byte ist das am wenigsten signifikante Byte). Beispielsweise wird die Zahl 10,001 Basis 10 mit einer Skalierung von 4 auf eine ganze Zahl von 100010 skaliert. Da dies 186AA im Hexadezimalformat ist, lautet der Wert in SQL_NUMERIC_STRUCT "AA 86 01 00 00 ... 00", mit der Anzahl der by der SQL_MAX_NUMERIC_LEN #definedefinierten Bytes.

Weitere Informationen zu SQL_NUMERIC_STRUCTfinden Sie unter HOWTO: Abrufen numerischer Daten mit SQL_NUMERIC_STRUCT.

[f] Die Genauigkeits- und Skalierungsfelder des datentyps SQL_C_NUMERIC werden für eingaben aus einer Anwendung und für die Ausgabe des Treibers in die Anwendung verwendet. Wenn der Treiber einen numerischen Wert in das SQL_NUMERIC_STRUCT schreibt, verwendet er einen eigenen treiberspezifischen Standardwert als Wert für das feld Genauigkeit und verwendet den Wert im feld SQL_DESC_SCALE der Anwendungsbeschreibung (standard 0) für das Skalierungsfeld Feld. Eine Anwendung kann eigene Werte für Genauigkeit und Skalierung bereitstellen, indem sie die Felder SQL_DESC_PRECISION und SQL_DESC_SCALE der Anwendungsbeschreibung festlegen.

[g] Das Vorzeichenfeld ist 1, wenn positiv, 0, wenn negativ.

[h] _int64 werden möglicherweise nicht von einigen Compilern bereitgestellt.

[i] _SQL_C_BOOKMARK in ODBC 3*.x* veraltet ist.

[j] _SQL_C_SHORT, SQL_C_LONG und SQL_C_TINYINT wurden in ODBC durch signierte und nicht signierte Typen ersetzt: SQL_C_SSHORT und SQL_C_USHORT, SQL_C_SLONG und SQL_C_ULONG sowie SQL_C_STINYINT und SQL_C_UTINYINT. Ein ODBC 3*.x*-Treiber, der mit ODBC 2 funktionieren soll.x--Anwendungen sollten SQL_C_SHORT, SQL_C_LONG und SQL_C_TINYINT unterstützen, da der Treiber-Manager sie beim Aufrufen an den Treiber weitergibt.

[k] SQL_C_GUID kann nur in SQL_CHAR oder SQL_WCHAR konvertiert werden.

Dieser Abschnitt enthält das folgende Thema.

Siehe auch

C-Datentypen in ODBC-