Introducere în ado

ADO este o interfață concepută pentru a furniza o aplicație client cu capacități de acces și manipulare pentru date externe. ADO este o interfață la nivel de software pentru OLE DB (interfața este extrem de convenabilă și de înaltă performanță).





ADO și OLE DB formează împreună accesul universal la tehnologia datelor (UDA). În același timp, ca o interfață de nivel înalt pentru OLE DB, OAD utilizează furnizorii de date OLE DB (în momentul în care este în principal furnizorii de baze de date relaționale, deși există deja furnizori non-relațională surse de date și a sistemelor de e-mail).







Este demn de remarcat faptul că Microsoft a declarat public că ADO va înlocui în curând mare varietate de modele și tehnologii de acces la date, inclusiv metode de Microsoft în sine ca DAO, RDO.

În viitor, articolul presupune că cititorul este familiarizat cu interfețele OLE DB, astfel de concepte, furnizor și consumator de date, are cunoștințe de bază despre COM.

2. Modelul obiect al ADO.

ADO constă din următoarele componente principale:

Conexiune. ADO utilizează obiectele de conectare pentru a furniza conexiuni separate la sursa de date.

Comandă. Obiectele de comandă sunt folosite pentru a furniza comenzi specifice care sunt executate pe sursa de date. Aceste obiecte sunt folosite pentru a urmări parametrii asociați cu comanda.

Parametru. Obiectele de comandă conțin o colecție Parametri care include toți parametrii asociați cu comanda. Fiecare obiect Parametru individual servește la stocarea informațiilor despre un parametru transferat sau returnat de la o comandă executabilă.

Recordset. Seturile de obiecte de înregistrări furnizează interacțiunea datelor. Ele sunt folosite pentru a stoca un set de înregistrări returnate din sursa de date.

Câmp. Elementele de obiecte de obiecte de stocare conțin o colecție de obiecte de câmp utilizate pentru a lucra cu coloane individuale dintr-un grup de rânduri.

Proprietatea. Conectarea, Comanda, Recordset, obiectele câmpului conțin o colecție de proprietăți ale obiectelor de proprietate. Obiectele de obiecte servesc pentru a reprezenta parametri sau proprietăți suplimentare ale unui ADO care nu poate fi controlat de proprietățile încorporate ale obiectului.

Eroare. Sunt destinate reprezentării informațiilor privind erorile care pot apărea în limitele unei singure operații.

3. Puțin despre directiva #import

Directiva preprocessor #import vă permite să creați automat o bibliotecă de tip COM cu clase C ++ pentru interfețe COM. Acest lucru este foarte convenabil dacă nu aveți acces la fișierele MIDL. Utilizarea acestei directive Visual C ++ face mult mai ușor să lucrați cu obiecte, metode și proprietăți ADO.

Cu o utilizare similară a macrocomenzii _COM_SMARTPTR_TYPEDEF, compilatorul declară indicatorul inteligent INameInterfacePtr.

Notă: _com_ptr_t este o clasă de șabloane încapsulând un pointer la interfața COM. _com_ptr_t se opune în mod automat invocă metode de încapsulat interfață AddRef () pentru a crea obiectul și Release () pe ieșirea din domeniul de aplicare al obiectului, care controlează în mod corespunzător existența COM-obiect.

Fișierul cu antet auxiliar (.tli) conține implementarea clasei de biblioteci de tip.

Directiva #import arată astfel:

#import "filename" [atribute]

#import <имя_файла> [Atribute]

numele fișierului este, de obicei, un fișier cu următoarele tipuri. TLB. ODL. dll. exe. OCX.

exclude - exclude anumite elemente sau tipuri de biblioteci generate în fișierele antet

high_method_prefix - specifică prefixul care trebuie plasat la începutul numelor metodelor și proprietăților nivelului superior

high_property_prefixes - stabilește prefixul pentru denumirile standard Get, Put și PutRef, care vor fi plasate la începutul metodei când accesează proprietatea.

implementation_only - dezactivează crearea fișierului antet principal

named_guides - îi spune compilatorului să definească și să inițieze variabilele cu GUID-uri vechi

no_auto_exclude - dezactivează ștergerea automată a definițiilor elementelor

no_implementation - interzice generarea unui fișier .tli

no_namespace - Nu se utilizează niciun spațiu de nume, specificația căruia se află în instrucțiunea bibliotecii

raw_dispinterfaces - spune compilatorului să genereze toate apelurile către metode și proprietăți prin intermediul funcției Invoke și să returneze codul de eroare HRESULT. Shell-urile de nivel superior nu sunt generate.

raw_interfaces_only - permite să furnizeze numai conținutul librăriei de tip a nivelului inferior, suprimând generarea spațiilor libere de nivel superior

raw_method_prefix - atașează un prefix brut la numele dat, care este, de obicei, conectat la funcții membre joase

raw_native_types - forțează utilizarea tipurilor de date de nivel inferior (în loc de _bstr_t - BSTR, în loc de _variant_t - VARIANT)

raw_property_prefixes - vă permite să setați un prefix de nivel inferior pentru metodele de proprietate put, get, and putref

redenumiți - redenumiți biblioteca de tip și preveniți reutilizarea numelor

rename_namespace - indică spațiul de nume care conține informații despre tipov.Itak bibliotecă după explicații plictisitoare privind directiva #import, ia în considerare modul în care aceasta (directiva) poate fi utilizat pentru a activa interfața ADO la cererea noastră.

Vom scrie fișierului stdafx.h (de exemplu) directiva notorie după cum urmează:

#import "c: Program FilesForm FilesSystemADOmsado15.dll"

În acest caz, clasele sunt create din biblioteca de tip msado15.dll care implementează obiecte ADO și este furnizată ca parte a SDK-ului OLE DB.

Parametrul redenumire trebuie să redenumiți ADO EOF constantă, deoarece este deja utilizat în antetul fișierelor stdio.h, ios.h, stream.h, inclus în afxwin.h.

4. Inițializarea COM.

Aici totul este simplu:

Înainte de a lucra cu obiecte ADO, trebuie să inițializați mediul COM. Aceasta se face prin apelarea funcției API

HRESULT CoInitialize (LPVOID pvReserved);

a păstrat un parametru nul.

Pentru a descărca COM, se folosește funcția

5. Stabilirea unei conexiuni la sursa de date.

În acest scop, așa cum sa menționat mai sus, a folosit un obiect de conexiune (o conexiune la sursa de date și gestionarea acestor conexiuni sunt realizate cu ajutorul metodelor deschise (), Închidere () obiect de conexiune) .Deși, este de remarcat faptul că nu se poate crea pe cont propriu. Puteți lăsa ADO să creeze conexiunea utilizată de obiectele Recordset și Command. Cu toate acestea, aveți nevoie pentru a crea o conexiune de obiect, în cazul în care se presupune managementul tranzacției (pentru a crea și gestiona Connection Următoarele metode sunt destinate tranzacției: BeginTrans (), CommitTrans () și RoolbackTrans ()).

Deci, creați o conexiune. Pentru aceasta, luăm următorii pași:

1. Declarați indicatorul de conectare:

2. Creați un obiect Connection utilizând funcția CreateInstance ():

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

rclsid - CLSID al obiectului;

pUnknown - pointer la interfața externă în timpul agregării;

dwClsContext - contextul pentru executarea codului executabil.

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

3. După crearea unei instanțe a clasei Connection, creați o conexiune. Se numește metoda Open a obiectului Connection.

HRESULT Deschis (_bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options = NULL);

ConnectionString - șir de conexiuni (vezi tabelele 1.1 și 1.2).

ID utilizator - numele de utilizator pentru conectarea la sursa de date

Parola - parola de utilizator

Opțiuni - vă permite să specificați modul în care va fi efectuată conexiunea - sincron (adConnectUnspecified) sau asincron (adAsyncConnect).

Tabelul 1.1. Tipul de șir de conexiune a trecut la metoda Open (.) A obiectului Connection pentru diferiții furnizori de OLE DB (MSDN)







Articole similare

Trimiteți-le prietenilor: