Megosztás a következőn keresztül:


Illesztőprogram-kezelő szerepköre a csatlakozási folyamatban

Ne feledje, hogy az alkalmazások nem hívnak közvetlenül illesztőprogram-függvényeket. Ehelyett az Illesztőprogram-kezelő függvényeket ugyanazon a néven hívják meg, és az Illesztőprogram-kezelő hívja az illesztőprogram-függvényeket. Általában ez szinte azonnal megtörténik. Az alkalmazás például meghívja az SQLExecute-t az Illesztőprogram-kezelőben, és néhány hibaellenőrzés után az Illesztőprogram-kezelő meghívja az SQLExecute-et az illesztőprogramban.

A kapcsolati folyamat eltérő. Amikor az alkalmazás meghívja az SQLAllocHandle függvényt a SQL_HANDLE_ENV és SQL_HANDLE_DBC opciókkal, a függvény csak a Driver Managerben foglalja le a leírókat. Az Illesztőprogram-kezelő nem hívja meg ezt a függvényt az illesztőprogramban, mert nem tudja, melyik illesztőprogramot hívja meg. Hasonlóképpen, ha az alkalmazás átadja egy nem összekapcsolt kapcsolat leíróját az SQLSetConnectAttr vagy az SQLGetConnectAttr számára, csak az Illesztőprogram-kezelő hajtja végre a függvényt. Tárolja vagy lekéri az attribútumértéket a kapcsolati leírójából, és az SQLSTATE 08003 -at (a kapcsolat nem nyitott) adja vissza, amikor olyan attribútum értékét kapja meg, amely nincs beállítva, és amelyhez az ODBC nem definiál alapértelmezett értéket.

Amikor az alkalmazás meghívja az SQLConnectet, az SQLDriverConnectet vagy az SQLBrowseConnectet, először az Illesztőprogram-kezelő határozza meg, hogy melyik illesztőprogramot használja. Ezután ellenőrzi, hogy egy illesztőprogram jelenleg betöltve van-e a kapcsolaton:

  • Ha nincs betöltve illesztőprogram a kapcsolaton, az Illesztőprogram-kezelő ellenőrzi, hogy a megadott illesztőprogram egy másik kapcsolatra van-e betöltve ugyanabban a környezetben. Ha nem, az Illesztőprogram-kezelő betölti az illesztőprogramot a kapcsolaton, és meghívja az SQLAllocHandle-t az illesztőprogramban a SQL_HANDLE_ENV beállítással.

    Az illesztőprogram-kezelő ezután meghívja az SQLAllocHandle-t az illesztőprogramban a SQL_HANDLE_DBC opcióval, függetlenül attól, hogy az éppen betöltődött-e vagy sem. Ha az alkalmazás beállít bármilyen kapcsolati attribútumot, az Illesztőprogram-kezelő meghívja az SQLSetConnectAttr parancsot az illesztőprogramban; hiba esetén az Illesztőprogram-kezelő kapcsolati függvénye SQLSTATE IM006-ot ad vissza (az illesztőprogram SQLSetConnectAttr hibája). Végül az Illesztőprogram-kezelő meghívja a kapcsolati függvényt az illesztőprogramban.

  • Ha a megadott illesztőprogram be van töltve a kapcsolatra, az Illesztőprogram-kezelő csak az illesztőprogram kapcsolati függvényét hívja meg. Ebben az esetben az illesztőnek gondoskodnia kell arról, hogy a kapcsolat összes kapcsolatattribútuma fenntartsa az aktuális beállításokat.

  • Ha egy másik illesztőprogram van betöltve a kapcsolaton, az Illesztőprogram-kezelő meghívja az SQLFreeHandle-t az illesztőprogramban a kapcsolat felszabadításához. Ha nincs más kapcsolat, amely az illesztőprogramot használja, az illesztőprogram-kezelő meghívja az SQLFreeHandle-t az illesztőprogramban, hogy szabadítsd fel a környezetet, és ürítsd ki az illesztőprogramot. Az Illesztőprogram-kezelő ezután ugyanazokat a műveleteket hajtja végre, mint amikor egy illesztő nincs betöltve a kapcsolatra.

Az illesztőprogram-kezelő zárolja a környezeti leírót (henv), mielőtt meghívja az illesztőprogram SQLAllocHandle-jét és az SQLFreeHandle-t , ha a HandleTypeértéke SQL_HANDLE_DBC.

Amikor az alkalmazás meghívja az SQLDisconnectet, az Illesztőprogram-kezelő meghívja az SQLDisconnectet az illesztőprogramban. A rendszer azonban betölti az illesztőprogramot, ha az alkalmazás újra csatlakozik az illesztőprogramhoz. Amikor az alkalmazás meghívja az SQLFreeHandle-t az SQL_HANDLE_DBC beállítással, az Illesztőprogram-kezelő meghívja az SQLFreeHandle-t az illesztőprogramban. Ha az illesztőprogramot más kapcsolatok nem használják, az Illesztőprogram-kezelő ezután meghívja az SQLFreeHandle-t az illesztőprogramban a SQL_HANDLE_ENV beállítással, és eltávolítja az illesztőprogramot.