Dynaset

Ez a témakör ismerteti a dinasztiákat, és ismerteti azok rendelkezésre állását.

Megjegyzés:

Ez a témakör az MFC ODBC-osztályokra vonatkozik, beleértve a CRecordsetet is. A DAO-osztályokban lévő dinasztiákról további információt a CDaoRecordset című témakörben talál. A DAO használatával dinamikus adatcsomag típusú rekordkészleteket nyithat meg.

A dynaset egy dinamikus tulajdonságokkal rendelkező rekordhalmaz. Az élettartama során a dynaset módban lévő rekordhalmaz-objektum (általában dynasetnek nevezik) a következő módon van szinkronizálva az adatforrással. Többfelhasználós környezetben más felhasználók szerkeszthetik vagy törölhetik a dynasetben lévő rekordokat, vagy hozzáadhatnak rekordokat ahhoz a táblához, amelyet a dynaset képvisel. Azok a rekordok, amelyeket az alkalmazás hozzáad vagy töröl a rekordhalmazból, megjelennek a dinasztiában. A táblához más felhasználók által hozzáadott rekordok nem jelennek meg a dinamikus készletben mindaddig, amíg újjá nem építi a dinamikus készletet a(z) Requery tagfüggvény meghívásával. Amikor más felhasználók törölnek rekordokat, az MFC-kód kihagyja a rekordhalmazban lévő törléseket. Más felhasználók szerkesztési módosításai a meglévő rekordokon azonnal láthatók az adatnézetedben, amikor az érintett rekordra görgetsz.

Hasonlóképpen, a dinasztiában lévő rekordokon végrehajtott módosítások a más felhasználók által használt dinasztiákban is megjelennek. Az ön által hozzáadott rekordok nem jelennek meg a többi felhasználó dinakészleteiben, amíg újra nem kérdezik le a dinakészleteiket. A törölt rekordok más felhasználók rekordhalmazaiban "töröltként" vannak megjelölve. Ha több kapcsolattal rendelkezik ugyanahhoz az adatbázishoz (több CDatabase objektumhoz), az ezekhez a kapcsolatokhoz társított rekordhalmazok állapota megegyezik a többi felhasználó rekordhalmazával.

A dinasztiák akkor a legértékesebbek, ha az adatoknak dinamikusnak kell lenniük, például egy légitársaság foglalási rendszerében.

Megjegyzés:

A dinamikkészletek használatához rendelkeznie kell egy ODBC-illesztővel az adatforráshoz, amely támogatja a dinamikkészleteket, és nem szabad betölteni az ODBC kurzortárat. További információ: Dynasets rendelkezésre állása.

Ha meg szeretné adni, hogy egy rekordhalmaz egy dinamikus készlet, adja meg a CRecordset::dynaset tagfüggvény első paramétereként a Open értéket a rekordhalmaz-objektumhoz.

Megjegyzés:

A frissíthető adatcsoportok esetében az ODBC-illesztőnek támogatnia kell a pozícionált frissítési utasításokat vagy az ::SQLSetPos ODBC API-függvényt. Ha mindkettő támogatott, az MFC a ::SQLSetPos-t használja a hatékonyság érdekében.

A Dynasets rendelkezésre állása

Az MFC-adatbázisosztályok a következő követelmények teljesülése esetén támogatják a dinasztiákat:

  • Az ODBC-kurzortár DLL-je nem használható ehhez az adatforráshoz.

    Ha a kurzortárat használja, elfedi a mögöttes ODBC-illesztő bizonyos funkcióit, amelyek a dinasztiák támogatásához szükségesek. Ha dinasztiákat szeretne használni (és az ODBC-illesztő rendelkezik a dinasztiákhoz szükséges funkciókkal, a szakasz többi részében leírtak szerint), akkor az MFC-nek nem kell betöltenie a kurzortárat egy CDatabase objektum létrehozásakor. További információ: ODBC és az osztály OpenEx vagy CDatabase tag függvénye.

    Az ODBC terminológiájában a dinasztiákat és a pillanatképeket kurzoroknak nevezzük. A kurzor egy olyan mechanizmus, amellyel nyomon követhető a rekordhalmaz pozíciója.

  • Az adatforrás ODBC-illesztőprogramjának támogatnia kell a billentyűkészlet-alapú kurzorokat.

    A billentyűkészlet-vezérelt kurzorok egy tábla adatait kezelik egy kulcskészlet beolvasásával és tárolásával. A kulcsok az aktuális adatok beolvasására szolgálnak a táblából, amikor a felhasználó egy adott rekordra görget. Annak megállapításához, hogy az illesztőprogram biztosítja-e ezt a támogatást, hívja meg az ::SQLGetInfo ODBC API függvényt a SQL_SCROLL_OPTIONS paraméterrel.

    Ha kulcskészlet-támogatás nélkül próbál megnyitni egy dynasetet, a visszatérési kód CDBException lesz AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED értékkel.

  • Az adatforrás ODBC-illesztőprogramjának támogatnia kell a kiterjesztett lekérést.

    A kiterjesztett lekérés lehetővé teszi az SQL-lekérdezés eredményül kapott rekordjainak görgetését és előre görgetését. Annak megállapításához, hogy az illesztőprogram támogatja-e ezt a képességet, hívja meg az ::SQLGetFunctions ODBC API függvényt a SQL_API_SQLEXTENDEDFETCH paraméterrel.

Ha frissíthető dynaseteket (vagy pillanatképeket) szeretne használni, az ODBC-illesztőnek támogatnia kell az ODBC API-függvényt vagy a pozicionált frissítéseket is. A ::SQLSetPos függvény lehetővé teszi, hogy az MFC SQL-utasítások küldése nélkül frissítse az adatforrást. Ha ez a támogatás elérhető, az MFC az SQL helyett inkább ezt használja a frissítésekhez. Annak megállapításához, hogy az illesztőprogram támogatja-e ::SQLSetPos, hívja ::SQLGetInfo meg a SQL_POS_OPERATIONS paramétert.

A pozicionált frissítések SQL-szintaxissal (a WHERE CURRENT OF<cursorname> formában) azonosítják az adatforrás táblájának egy adott sorát. Annak megállapításához, hogy az illesztőprogram támogatja-e a helyhez kapcsolódó frissítéseket, hívja ::SQLGetInfo meg a SQL_POSITIONED_STATEMENTS paramétert.

Az MFC-dynasetekhez (de nem a csak előre mutató rekordkészletekhez) 2. szintű API-megfelelőségű ODBC-illesztőre van szükség. Ha az adatforrás illesztőprogramja megfelel az 1. szintű API-készletnek, akkor is használhatja frissíthető és írásvédett pillanatképeket és csak előre lapozható rekordhalmazokat, de dinamikus adathalmazokat nem. Az 1. szintű illesztőprogram azonban támogathatja a dynaseteket, ha támogatja a kiterjesztett beolvasást és a billentyűkészlet-vezérelt kurzorokat. Az ODBC megfelelőségi szintjeiről további információt az ODBC-ben talál.

Megjegyzés:

Ha a pillanatképeket és a dinasztiákat is használni szeretné, két különböző CDatabase objektumra (két különböző kapcsolatra) kell alapoznia őket.

Az ODBC kurzortár által fenntartott köztes tárolót használó pillanatképekkel ellentétben a dinamikus adatkészletek közvetlenül az adatforrásból kérnek le egy rekordot, amint odagörget. Így a dinasztia által eredetileg kiválasztott rekordok szinkronizálva maradnak az adatforrással.

A Visual C++ jelen verziójában szereplő ODBC-illesztőprogramok listájáról és a további illesztőprogramok beszerzéséről az ODBC-illesztőprogramok listájában olvashat.

Lásd még

Open Database Connectivity (ODBC) - nyílt adatbázis-kapcsolat