Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megjegyzés:
Ezek az információk az MFC ODBC-osztályokra vonatkoznak. Ha az MFC DAO-osztályokkal dolgozik, tekintse meg a DAO súgójának "A Microsoft Jet Adatbázismotor SQL és ANSI SQL összehasonlítása" című témakörét.
Az alábbi táblázat az ANSI SQL-adattípusokat C++ adattípusokra képezi le. Ez kibővíti az ODBC Programozó referenciadokumentációjának D függelékében megadott C nyelvi információkat. A varázslók a legtöbb adattípus-leképezést kezelik. Ha nem használ varázslót, a leképezési adatok segítségével manuálisan is megírhatja a mezőcsere-kódot.
A C++ adattípusokra leképezett ANSI SQL-adattípusok
| ANSI SQL-adattípus | C++ adattípus |
|---|---|
| BEJÁRÓNŐ | CString |
| Decimális |
CString 1 |
| SMALLINT | int |
| VALÓS | float |
| EGÉSZ SZÁM | long |
| LEBEG | double |
| DUAL | double |
| NUMERIKUS |
CString 1 |
| VARCHAR | CString |
| LONGVARCHAR |
CLongBinary, CString 2 |
| BIT | BOOL |
| TINYINT | BYTE- |
| BIGINT |
CString 1 |
| BINÁRIS | CByteArray |
| VARBINARY | CByteArray |
| LONGVARBINARY |
CLongBinary, CByteArray 3 |
| DÁTUM |
CTime, CString |
| IDŐ |
CTime, CString |
| IDŐBÉLYEG |
CTime, CString |
ANSI DECIMÁLIS és NUMERIKUS leképezése
CString-ra történik, mert az SQL_C_CHAR az alapértelmezett ODBC-átviteli típus.255 karakternél hosszabb karakteradat alapértelmezés szerint csonkul, amikor a következőre van térképezve:
CString. A csonkolás hosszát az nMaxLength argumentumRFX_Textexplicit megadásával hosszabbíthatja meg.A 255 karakternél hosszabb bináris adatok alapértelmezés szerint csonkolva lesznek a megfeleltetéskor
CByteArray. A csonkolás hosszát az nMaxLength argumentumRFX_Binaryexplicit megadásával hosszabbíthatja meg.
Ha nem az ODBC-kurzortárat használja, problémát tapasztalhat, amikor két vagy több hosszú változó hosszúságú mezőt próbál frissíteni a Microsoft SQL Server ODBC-illesztőprogram és az MFC ODBC-adatbázisosztályok használatával. Az ODBC-típusok, SQL_LONGVARCHAR és SQL_LONGVARBINARY, a SQL Server szöveg és kép típusaira vannak leképezve. A CDBException akkor kerül a programba, ha két vagy több hosszú változó hosszúságú mezőt frissít ugyanazon a híváson CRecordset::Update. Ezért ne frissítsen egyszerre több hosszú oszlopot.CRecordset::Update Az ODBC API-val SQLPutDataegyszerre több hosszú oszlopot is frissíthet. Használhatja az ODBC-kurzortárat is, de ez nem ajánlott olyan illesztőprogramok esetében, mint például az SQL Server-illesztőprogram, amelyek támogatják a kurzorokat, és nincs szükségük a kurzortárra.
Ha az ODBC kurzorkódtárat az MFC ODBC adatbázisosztályokkal és a Microsoft SQL Server ODBC-illesztővel használja, akkor előfordulhat, hogy egy ASSERT hiba történik, és a CDBException ha egy CRecordset::Update hívás követi a CRecordset::Requery hívást. Ehelyett hívja meg CRecordset::Close és CRecordset::Open ne CRecordset::Requery. Egy másik megoldás, hogy ne használjuk az ODBC kurzortárat, mert az SQL Server és az SQL Server ODBC-illesztő natív módon támogatja a kurzorokat, így nincs szükség az ODBC kurzortárra.