Dela via


Kompatibilitetsmatris

I följande tabell beskrivs kompatibiliteten för de typer av program och drivrutiner som definierats tidigare i det här avsnittet.

Apptyp

och version
32-bit ODBC

2.x-drivrutin
ODBC 3.x

driver
ODBC 3.8-drivrutin ISO- och Open Group-kompatibel drivrutin
16-bitarsprogram, valfri version Kompatibel Kompatibel Kompatibel Kompatibel
Pure 2.x-applikation Kompatibel Kompatibel Kompatibel Inte kompatibel[3]
Pure 2.x omkompilerat program Kompatibel Kompatibel[1] Kompatibel[1] Inte kompatibel[3]
Pure 2.x Unicode-applikation Kompatibel Kompatibel[1] Kompatibel[1] Inte kompatibel[3]
Pure Open Group och ISO-kompatibelt program Inte kompatibel Kompatibel[2] Kompatibel[2] Kompatibel[2]
Pure 3.0-applikation Inte kompatibel Kompatibel Kompatibel Inte kompatibel[4]
Pure 3.5-applikation Inte kompatibel Kompatibel Kompatibel Inte kompatibel[4]
Pure 3.8 (eller högre) applikation Inte kompatibel [5] Inte kompatibel [5] Kompatibel Inte kompatibel [4]
Ersatt applikation Kompatibel Kompatibel Kompatibel Inte kompatibel[3]

[1] Programmet måste kompilera om med ODBC 3.5-huvuden (eller senare) med UNICODE-alternativet (om det är ett Unicode-program) och måste ange ODBCVER till 0x0250.

[2] Programmet måste kompilera med ODBC 3.5-huvuden (eller senare) och länka till ODBC Driver Manager. Den måste också ange rubrikflaggan ODBC_STD.

[3] Den här konfigurationen kan eventuellt misslyckas eftersom det finns funktioner i ODBC 2.x som inte finns i standarderna, till exempel bokmärken.

[4] Den här konfigurationen kan eventuellt misslyckas eftersom det finns funktioner i ODBC 3.x som inte finns i standarderna, till exempel bokmärken.

[5] Den här konfigurationen kan eventuellt misslyckas eftersom det finns funktioner i ODBC 3.8 som inte finns i ODBC 2.x- eller 3.x-drivrutiner, till exempel drivrutinsspecifika C-datatyper i ODBC.

Drivrutinshanterarens kompatibilitet

Ett ODBC 3.0-program som måste fungera med alla Driver Manager-versioner bör göra följande vid start:

  • Allokera ett miljöhandtag.

  • Ange SQL_ATTR_ODBC_VERSION miljöattributet till SQL_OV_ODBC3_80. Om Drivrutinshanteraren returnerar SQL_ERROR är Drivrutinshanteraren äldre än 3,8. Återställ SQL_ATTR_ODBC_VERSION till SQL_OV_ODBC3 eller SQL_OV_ODBC2, beroende på vad som är lämpligt, för att motsvara drivrutinshanteraren.

  • Allokera ett anslutningshandtag.

  • Upprätta en anslutning.

  • Anropa SQLGetInfo för SQL_DRIVER_ODBC_VER för att fastställa drivrutinsversionen. Om drivrutinen är en ODBC 3.8-drivrutin kan du använda drivrutinsspecifika C-typer. Annars ska du inte använda drivrutinsspecifika C-datatyper.

Observera att ett omkompilerat ODBC 3.x-program kan använda andra ODBC 3.8-funktioner än drivrutinsspecifika C-typer utan att ange SQL_OV_ODBC3_80 för SQL_ATTR_ODBC_VERSION. Detta liknar ett omkompilerat ODBC 2.x-program med odbc 3.x-funktioner.

Använda SQLCancelHandle i ett program som är kompatibelt med alla drivrutinshanterare

Eftersom SQLCancelHandle-funktionen inte stöds i Drivrutinshanterare som släpptes före Windows 7 kan inte ett program läsas in i äldre versioner av Windows om det anropar SQLCancelHandle direkt. Om du vill arbeta med alla versioner av Driver Managers och använda SQLCancelHandle i nya versioner av Windows bör ett program anropa SQLCancelHandle indirekt med hjälp av LoadLibrary och GetProcAddress.

Se även

Nyheter i ODBC 3.8