Freigeben über


SQL: SQL- und C++-Datentypen (ODBC)

Hinweis

Diese Informationen gelten für die MFC-ODBC-Klassen. Wenn Sie mit den MFC DAO-Klassen arbeiten, lesen Sie das Thema "Vergleich von Microsoft Jet Datenbank-Engine SQL und ANSI SQL" in der DAO-Hilfe.

Die folgende Tabelle ordnet ANSI SQL-Datentypen C++-Datentypen zu. Dadurch werden die C-Sprachinformationen in Anhang D der Referenzdokumentation des ODBC-Programmierers erweitert. Die Assistenten verwalten die meisten Datentypzuordnungen für Sie. Wenn Sie keinen Assistenten verwenden, können Sie mithilfe der Zuordnungsinformationen den Feldaustauschcode manuell schreiben.

ANSI SQL-Datentypen, die C++-Datentypen zugeordnet sind

ANSI SQL-Datentyp C++-Datentyp
CHAR CString
DECIMAL CString 1
SMALLINT int
REAL float
INTEGER long
FLOAT double
DOUBLE double
NUMERIC CString 1
VARCHAR CString
LONGVARCHAR CLongBinary, CString 2
BIT BOOL
TINYINT BYTE
BIGINT CString 1
BINARY CByteArray
VARBINARY CByteArray
LONGVARBINARY CLongBinary, CByteArray 3
DATE CTime, CString
TIME CTime, CString
TIMESTAMP CTime, CString
  1. ANSI DECIMAL und NUMERIC map to CString because SQL_C_CHAR is the default ODBC transfer type.

  2. Zeichendaten, die über 255 Zeichen hinausgehen, werden standardmäßig abgeschnitten, wenn sie zugeordnet sind CString. Sie können die Abkürzungslänge erweitern, indem Sie das Argument "nMaxLengthRFX_Text" explizit festlegen.

  3. Binäre Daten, die über 255 Zeichen hinausgehen, werden standardmäßig abgeschnitten, wenn sie zugeordnet sind CByteArray. Sie können die Abkürzungslänge erweitern, indem Sie das Argument "nMaxLengthRFX_Binary" explizit festlegen.

Wenn Sie die ODBC-Cursorbibliothek nicht verwenden, tritt möglicherweise ein Problem auf, wenn Sie versuchen, zwei oder mehr lange Felder mit variabler Länge mithilfe des Microsoft SQL Server ODBC-Treibers und der MFC ODBC-Datenbankklassen zu aktualisieren. Die ODBC-Typen, SQL_LONGVARCHAR und SQL_LONGVARBINARY, werden text- und image-SQL Server-Typen zugeordnet. Ein CDBException Fehler wird ausgelöst, wenn Sie zwei oder mehr lange Felder mit variabler Länge für denselben Aufruf aktualisieren.CRecordset::Update Aktualisieren Sie daher nicht mehrere lange Spalten gleichzeitig mit CRecordset::Update. Sie können mehrere lange Spalten gleichzeitig mit der ODBC-API SQLPutDataaktualisieren. Sie können auch die ODBC-Cursorbibliothek verwenden, dies wird jedoch nicht für Treiber wie den SQL Server-Treiber empfohlen, die Cursor unterstützen und die Cursorbibliothek nicht benötigen.

Wenn Sie die ODBC-Cursorbibliothek mit den MFC ODBC-Datenbankklassen und dem MICROSOFT SQL Server ODBC-Treiber verwenden, kann ein ASSERT-Objekt zusammen mit einem CDBException Aufruf nach einem Aufruf auftreten.CRecordset::RequeryCRecordset::Update Rufen Sie CRecordset::Close stattdessen und CRecordset::Open nicht .CRecordset::Requery Eine andere Lösung besteht nicht darin, die ODBC-Cursorbibliothek zu verwenden, da der SQL Server- und der SQL Server-ODBC-Treiber systemeigene Unterstützung für Cursor bereitstellen und die ODBC-Cursorbibliothek nicht benötigt wird.

Siehe auch

SQL
SQL: Durchführen direkter SQL-Aufrufe (ODBC)