Megosztás:


Állapotváltások

Az ODBC különálló állapotokat határoz meg az egyes környezetekhez, az egyes kapcsolatokhoz és az egyes utasításokhoz. A környezet például három lehetséges állapottal rendelkezik: Nincs áthelyezve (amelyben nincs lefoglalva környezet), Lefoglalt (amelyben egy környezet van lefoglalva, de nincs kiosztva kapcsolat), és kapcsolat (amelyben egy környezet és egy vagy több kapcsolat van lefoglalva). A kapcsolatok hét lehetséges állapottal rendelkeznek; utasításnak 13 lehetséges állapota van.

Egy adott elem, amelyet a leíró azonosít, egyik állapotból a másikba kerül, amikor az alkalmazás meghív egy bizonyos függvényt vagy függvényt, és átadja a leírót az adott elemnek. Az ilyen mozgást állapotváltásnak nevezzük. Ha például az SQLAllocHandle-lel környezeti leírót oszt ki, áthelyezi a környezetet a Nem lefoglaltról a Lefoglaltra, és ha az SQLFreeHandle-lel felszabadítja a leírót, az a Lefoglalt helyről a Nem lefoglaltra adja vissza. Az ODBC korlátozott számú jogi állapotváltást határoz meg, ami egy másik módja annak, hogy a függvényeket bizonyos sorrendben kell meghívni.

Egyes függvények, például az SQLGetConnectAttr egyáltalán nem befolyásolják az állapotot. Más függvények egyetlen elem állapotát befolyásolják. Az SQLDisconnect például áthelyez egy kapcsolatot egy kapcsolati állapotból egy lefoglalt állapotba. Végül egyes függvények több elem állapotát is befolyásolják. Ha például egy kapcsolati leírót az SQLAllocHandle-val oszt ki, áthelyez egy kapcsolatot egy nem lefoglalt állapotból egy lefoglalt állapotba, és áthelyezi a környezetet egy lefoglalt állapotból egy kapcsolatállapotba.

Ha egy alkalmazás sorrenden kívül hív meg egy függvényt, a függvény állapotáttűnési hibát ad vissza. Ha például egy környezet kapcsolati állapotban van, és az alkalmazás ezzel a környezeti leíróval hívja meg az SQLFreeHandle-t , az SQLFreeHandle az SQLSTATE HY010-et adja vissza (függvényütemezési hiba), mert csak akkor hívható meg, ha a környezet lefoglalt állapotban van. Ha ezt érvénytelen állapotváltásként definiálja, az ODBC megakadályozza, hogy az alkalmazás felszabadítsa a környezetet, miközben aktív kapcsolatok vannak.

Egyes állapotváltások az ODBC kialakításában rejlik. Például nem lehet leküldni egy kapcsolati leírót anélkül, hogy először kiosztanak egy környezeti leírót, mert a kapcsolati leírót kiosztó függvényhez környezeti leíróra van szükség. Az egyéb állapotváltásokat az illesztőprogram-kezelő és az illesztőprogramok kényszerítik ki. Az SQLExecute például egy előkészített utasítást hajt végre. Ha az utasításkezelő nem előkészített állapotban van, az SQLExecute az SQLSTATE HY010-et adja vissza (függvényütemezési hiba).

Az alkalmazás szempontjából az állapotváltások általában egyszerűek: A jogi állapotváltások általában kéz a kézben járnak egy jól megírt alkalmazás folyamatával. Az állapotváltások összetettebbek az illesztőprogram-kezelő és az illesztőprogramok számára, mivel nyomon kell követniük a környezet állapotát, az egyes kapcsolatokat és az egyes utasításokat. A legtöbb ilyen munkát az illesztőprogram-kezelő végzi; az illesztőprogramok által elvégzendő munka nagy része függőben lévő eredménnyel rendelkező utasításokkal történik.

A jelen kézikönyv 1. és 2. része ("Bevezetés az ODBC-be" és az "Alkalmazások és illesztőprogramok fejlesztése") általában nem említi kifejezetten az állapotváltásokat. Ehelyett azt a sorrendet írják le, amelyben a függvényeket meg kell hívni. A "Végrehajtási utasítások" például azt jelzik, hogy egy utasítást elő kell készíteni az SQLPrepare-nal , mielőtt végrehajtható lenne az SQLExecute használatával. Az állapotok és állapotátmenetek teljes leírásáért, beleértve az illesztőprogram-kezelő által ellenőrzött és az illesztőprogramok által ellenőrizendő állapotátmeneteket, tekintse meg a B függeléket: ODBC állapotátmeneti táblák.