Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här informationen gäller för MFC ODBC-klasserna. Om du arbetar med MFC DAO-klasserna läser du avsnittet "Jämförelse av Microsoft Jet Database Engine SQL och ANSI SQL" i DAO-hjälpen.
I följande tabell mappas ANSI SQL-datatyper till C++-datatyper. Detta utökar C-språkinformationen i bilaga D till ODBC-programmerarens referensdokumentation . Guiderna hanterar de flesta datatypsmappningar åt dig. Om du inte använder en guide kan du använda mappningsinformationen för att skriva fältutbyteskoden manuellt.
ANSI SQL-datatyper mappade till C++-datatyper
| ANSI SQL-datatyp | C++-datatyp | 
|---|---|
| RÖDING | CString | 
| Decimal | 
              CString 1 | 
| SMALLINT | int | 
| VERKLIG | float | 
| HELTAL | long | 
| FLYTA | double | 
| DUBBEL | double | 
| NUMERISK | 
              CString 1 | 
| VARCHAR | CString | 
| LONGVARCHAR | 
              CLongBinary, CString 2 | 
| BIT | BOOL | 
| TINYINT | BYTE | 
| BIGINT | 
              CString 1 | 
| BINÄR | CByteArray | 
| VARBINARY | CByteArray | 
| LONGVARBINARY | 
              CLongBinary, CByteArray 3 | 
| DATUM | 
              CTime, CString | 
| TID | 
              CTime, CString | 
| TIDSSTÄMPEL | 
              CTime, CString | 
ANSI DECIMAL och NUMERIC mappas till
CStringeftersom SQL_C_CHAR är standardtypen för ODBC-överföring.Teckendata över 255 tecken trunkeras som standard när de mappas till
CString. Du kan utöka trunkeringslängden genom att uttryckligen ange argumentet nMaxLength förRFX_Text.Binära data över 255 tecken trunkeras som standard när de mappas till
CByteArray. Du kan utöka trunkeringslängden genom att uttryckligen ange argumentet nMaxLength förRFX_Binary.
Om du inte använder ODBC-markörbiblioteket kan det uppstå ett problem när du försöker uppdatera två eller flera långa fält med variabel längd med hjälp av ODBC-drivrutinen för Microsoft SQL Server och MFC ODBC-databasklasserna. ODBC-typerna , SQL_LONGVARCHAR och SQL_LONGVARBINARY, mappar till SQL Server-typer för text och bild. En CDBException utlöses om du uppdaterar två eller flera långa fält med variabel längd på samma anrop till CRecordset::Update. Uppdatera därför inte flera långa kolumner samtidigt med CRecordset::Update. Du kan uppdatera flera kolumner med stor mängd data samtidigt med ODBC-API-et SQLPutData. Du kan också använda ODBC-markörbiblioteket, men detta rekommenderas inte för drivrutiner, till exempel SQL Server-drivrutinen, som stöder markörer och inte behöver markörbiblioteket.
Om du använder ODBC-markörbiblioteket med MFC ODBC-databasklasserna och Microsoft SQL Server ODBC-drivrutinen kan en ASSERT inträffa tillsammans med ett CDBException om ett anrop till CRecordset::Update följer ett anrop till CRecordset::Requery. Ring i stället CRecordset::Close och CRecordset::Open istället för CRecordset::Requery. En annan lösning är att inte använda ODBC-markörbiblioteket eftersom SQL Server- och SQL Server ODBC-drivrutinen ger internt stöd för markörer internt och ODBC-markörbiblioteket inte behövs.