Bevezetés ado

Az ADO egy interfész, amely kliensalkalmazást biztosít a külső adatokhoz való hozzáféréssel és manipulációs képességekkel. Az ADO szoftver szintű interfész az OLE DB-hez (az interfész rendkívül kényelmes és nagy teljesítményű). Az ADO és az OLE DB az Univerzális adatátviteli technológiát (UDA) alkotja. Ugyanakkor, mivel az OLE DB-nek magas szintű felülete van, az ADO OLE DB adatszolgáltatókat használ (jelenleg a relációs adatbázisok szolgáltatói, bár a nem relációs adatforrások és az e-mail rendszerek szállítói már megjelennek).

Érdemes megjegyezni, hogy a Microsoft nyilvánosan kijelentette, hogy ADO hamarosan felváltja a hatalmas különféle modellek és adatok hozzáférési technológiák, beleértve a módszerek maga a Microsoft, mint DAO, RDO.

A jövőben a cikk feltételezi, hogy az olvasó ismeri az OLE DB interfészeket, ezek a fogalmak, a szolgáltató és az adatfogyasztók ismerik a COM-t.

2. Az ADO tárgymodellje.

Az ADO a következő fő összetevőkből áll:

Connection. Az ADO a Connection objektumokat használja az adatforráshoz való külön kapcsolódáshoz.

Command. A parancsobjektumok az adott adatforráson végrehajtott parancsok megadására szolgálnak. Ezeket az objektumokat a parancshoz tartozó paraméterek nyomon követésére használják.

Paraméter. A parancsobjektumok egy Paramétergyűjteményt tartalmaznak, amely tartalmazza a parancshoz tartozó összes paramétert. Minden egyes Paraméter objektum egy végrehajtható parancsnak átadott vagy visszaküldött paraméter tárolására szolgál.

Recordset. A Recordset objektumok adatokat kölcsönöznek. Ezeket az adatforrásból visszajuttatott rekordok tárolására használják.

Field. A Recordset objektumok egy olyan mező objektumgyűjteményt tartalmaznak, amelyet a sorcsoport egyéni oszlopainak kezelésére használnak.

Az ingatlan. A Connection, Command, Recordset, Field objektumok tartalmazzák az Property objektumok tulajdonságainak gyűjteményét. A tulajdonságobjektumok olyan ADO további paramétereit vagy tulajdonságait képviselik, amelyeket az objektum beépített tulajdonságai nem vezérelhetnek.

Error. Olyan hibákra vonatkozó információk ábrázolására szolgálnak, amelyek egy művelet határain belül előfordulhatnak.

3. Egy kicsit a #import irányelvről

Az #import preprocessor irányelv lehetővé teszi, hogy automatikusan létrehozzunk egy COM típusú könyvtárat C ++ osztályokkal a COM interfészekhez. Ez nagyon kényelmes, ha nem fér hozzá MIDL fájlokhoz. A Visual C ++ irányelv segítségével sokkal könnyebb az ADO objektumokkal, módszerekkel és tulajdonságokkal dolgozni.

A _COM_SMARTPTR_TYPEDEF makró hasonló használatával a fordító kijelenti az INameInterfacePtr intelligens mutatót.

Megjegyzés: A _com_ptr_t egy sablon osztály, amely egy mutatót tartalmaz a COM felülethez. _com_ptr_t kifogást automatikusan meghívja módszerek azokba beágyazott felület AddRef (), hogy a tárgy és Release () kilépéskor köréből az objektum, megfelelő ellenőrzésével létezését COM-objektumot.

A kiegészítő fejlécfájl (.tli) tartalmazza a típus könyvtárosztályok végrehajtását.

Az #import irányelv így néz ki:

#import "fájlnév" [attribútumok]

#import <имя_файла> [Attribútumok]

a fájlnév általában az alábbi típusú fájl. TLB. távoktatás. dll. exe. ocx.

exclude - kizár bizonyos elemeket vagy a könyvtárakat, amelyeket a fejléc fájlok tartalmaznak

high_method_prefix - meghatározza azt a prefixet, amelyet a legfelső szintű módszerek és tulajdonságok neveinek elején kell elhelyezni

high_property_prefixes - megadja az előtagot a Get, Put és PutRef szabványnevekhez, amelyeket a módszer nevének elején a tulajdonság elérésekor helyeznek el.

implementation_only - letiltja a fő fejléc fájl létrehozását

named_guides - megmondja a fordítónak, hogy definiálja és inicializálja a változókat a régi GUID-ekkel

no_auto_exclude - letiltja az elemdefiníciók automatikus törlését

no_implementation - tiltja a .tli fájl létrehozását

no_namespace - Nem használandó névtér, amelynek specifikációja a könyvtárban található

raw_dispinterfaces - azt mondja a fordítónak, hogy minden hívást metódusokra és tulajdonságokra generál az Invoke függvénnyel, és visszaadja a HRESULT hibakódot. A felső szintű kagyló nem keletkezik.

raw_interfaces_only - csak az alacsonyabb szintű típuskönyvtár tartalmát biztosítja, a felsőszintű függvény ürítések generálásának megszüntetését

raw_method_prefix - Hozzáad egy raw_ előtagot az adott névhez, amely általában alacsony szintű tagfunkciókhoz kapcsolódik

raw_native_types - alacsonyabb szintű adattípusok használata (_bstr_t helyett - BSTR helyett _variant_t - VARIANT)

raw_property_prefixes - lehetővé teszi az alacsonyabb szint előtagot a put, get és putref tulajdonságmechanizmusokhoz

átnevezés - átnevezi a típuskönyvtárat, és megakadályozza a nevek újrafelhasználását

rename_namespace - megad egy névteret, amely információkat tartalmaz a típuskönyvtárról, tehát a #import irányelv elégedetlen magyarázata után nézzük meg, hogyan használható fel arra, hogy engedélyezzük az ADO-felületek alkalmazását.

A hírhedt irányelv stdafx.h (például) a következőképpen írunk:

#import "c: ProgramfájlokCommon FilesSystemADOmsado15.dll"

Ebben az esetben az osztályokat az msado15.dll típusú könyvtárból hozza létre, amely implementálja az ADO objektumokat, és az OLE DB SDK részét képezi.

Az átnevezési paraméterben az ADO konstansnak az EOF konstansra kell átneveznie, mivel már használatban van az afxwin.h fájlban lévő stdio.h, ios.h, stream.h header fájlokban.

4. A COM indítása.

Itt minden egyszerű:

Mielőtt az ADO objektumokkal dolgozna, be kell állítania a COM környezetet. Ez az API funkció hívásával történik

HRESULT CoInitialize (LPVOID pvReserved);

pvA null paraméter megőrzése.

A COM eltávolításához a funkciót használjuk

5. Kapcsolat létrehozása az adatforrással.

Ilyen célból, amint fent említettük, a Connection objektumot használjuk (az adatforráshoz való kapcsolódás és a kapcsolat vezérlése a Connection objektum Open (), Close () metódusaival történik), bár érdemes megjegyezni, hogy önmagát nem tudjuk létrehozni. Csak hagyja ADO létrehozni a Recordset és Command objektumok által használt kapcsolatot. Azonban létre kell hoznia egy kapcsolati objektumot, ha tranzakciókat szeretne kezelni (a következő kapcsolati módszerek használhatók tranzakciók létrehozására és kezelésére: BeginTrans (), CommitTrans () és RoolbackTrans ()).

Szóval, hozz létre egy kapcsolatot. Ehhez az alábbi lépéseket tesszük:

1. A kapcsolatmutató kijelentése:

2. Hozzon létre egy Connection objektumot a CreateInstance () függvénnyel:

HRESULT CreateInstance (const CLSID rclsid, IUnknown * pOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)

rclsid - az objektum CLSID;

p Ismeretlen - mutató a külső felületen az aggregáció során;

dwClsContext - a végrehajtható kód végrehajtásának kontextusa.

hr = pConn.CreateInstance (__ uuidof (kapcsolat), NULL, CLSCTX_INPROC_SERVER);

3. Miután létrehozta a Connection osztály egy példányát, hozzon létre egy kapcsolatot. A Connection objektum Nyílt módját nevezzük.

HRESULT Open (_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Jelszó, hosszú Options = NULL);

ConnectionString - kapcsolat-string (lásd az 1.1 és 1.2 táblázatot).

UserID - felhasználói név az adatforráshoz való csatlakozáshoz

Jelszó - felhasználói jelszó

Opciók - lehetővé teszi a kapcsolat létrehozásának módját - szinkron módon (adConnectUnspecified) vagy aszinkron módon (adAsyncConnect).

1.1. Táblázat. A kapcsolat-karakterlánc típusa átkerült a különböző OLE DB szolgáltatók (MSDN) kapcsolat objektumának Open (.) Módjára

Kapcsolódó cikkek