ActiveX-dataobjekter

ActiveX Data Objects ( ADO ) er en av mekanismene som dataprogrammer bruker for å kommunisere med databaser , gi dem kommandoer og få resultater fra dem.

Med ADO kan et program lese, sette inn, redigere eller slette informasjon som finnes i forskjellige lagringsområder i databasen kalt tabeller. I tillegg kan selve databasen manipuleres for å lage nye informasjonslagringsområder (tabeller), samt endre eller slette blant annet eksisterende.

Den ble utviklet av Microsoft og brukes i Windows -miljøer av programmeringsspråk som Visual Basic , C++ , Delphi , blant andre, samt på nettet gjennom bruk av Active Server Pages (ASP) og VBScript -språket .

Evolusjon

ADO erstattet både DAO (Data Access Object) og RDO (Remote Data Object), som var de tidligere systemene som ble brukt for å få tilgang til henholdsvis databaser og eksterne databaser. Den har det meste av funksjonaliteten til begge modellene og er likevel enklere å bruke og forstå og derfor enklere og mindre tungvint å programmere .

Den siste versjonen av ADO, laget av Microsoft , heter ADO.NET , og den brukes i Microsofts .NET - plattformprogrammeringsmiljøer for å håndtere databaser både på Windows og på nettet ved hjelp av ASP.NET , som er den nye versjonen av ASP for .NET-plattformen.

I den gratis programvareprogrammeringsplattformen kalt Mono er det også et bibliotek som ligner på ADO.NET, noe som betyr at ADO.NET-teknologi nå kan brukes i andre operativsystemer enn Windows , som Linux , Mac OS X , BSD og Solaris .

ADO.NET er mye kraftigere enn ADO, men det er også veldig annerledes, så det er nødvendig å redesigne programmene laget med ADO, slik at de fungerer i det.

En ny versjon av .NET-miljøet skal etter planen komme ut i 2006 som vil ha en forbedret versjon av ADO.NET, kalt ADO.NET 2 .

+-----+------+ | DAO | RDO | +-----+------+ | ADO | +------------+ | ADO.NET | +------------+ | ADO.NET2 | +------------+ | ADO.NET 3.5 | +------------+


Operasjon

ADO er et mellomledd mellom programmet og databasen. Programmet viser ikke databasen direkte, men gjør alt arbeidet gjennom ADO. Ved hjelp av ADO kommuniserer programmet med databasen, spørringer, redigerer, setter inn, sletter poster, legger til tabeller, etc. ADO kommuniserer på sin side med databasen gjennom en "dataleverandør".

Programmet bruker ADO for å sende en forespørsel til databasen: "Gi meg for- og etternavnet til alle ansatte som bor i Venezuela" Program ---> ADO ---> Dataleverandør ---> Database

I motsatt retning svarer databasen, kommuniserer med dataleverandøren, sistnevnte med ADO, og til slutt når informasjonen programmet.

Databasen svarer Program <--- ADO <--- Dataleverandør <--- Database +--------+------------+ | Navn | Etternavn | +--------+------------+ | Josef | Pereira | | John | Perez | | Mary | Hernandez | +--------+------------+

Når programmet har fått informasjonen fra databasen, kan det gjøre hva som helst med det, for eksempel å vise det på en webside.

De forespurte brukerne er følgende:

Navn Etternavn
Josef Pereira
Juan Perez
Maria Hernandez

ADO-komponenter

Hovedkomponenter i ADO

Andre ADO-komponenter

Tilkobling, Recordset og Command-objekter

De tre hovedkomponentene i ADO er Connection, Recordset og Command (tilkoblingen, postsettet og kommandoen).

+------------+ +----| Tilkobling |----+ | +------------+ | | | +-----+-----+ +-----+-----+ | Rekordsett |---------| Kommando | +-----------+ +-----------+

Forbindelsen

Forbindelsen er som en motorvei som tillater flyt av data mellom programmet og databasen. Bestillinger som brukes fra programmet for å be om informasjon fra databasen eller for å utføre en operasjon i den som å slette poster, legge til poster, endre tabeller osv. kan gå gjennom den. Også langs denne motorveien kan data komme og gå, til og fra databasen, blant annet.

Både postsettet og kommandoen bruker tilkoblingen til å kommunisere med databasen.

Forbindelsen kommuniserer med databasen gjennom en mellommann kalt en "dataleverandør".

+--------+ +-----------+ +--------+ | Tilkobling | ------> | Leverandør | ------> | Grunnlag for | | | <------ | av data | <------ | data | +--------+ +-----------+ +--------+ Dataleverandøren

Dataleverandøren er en komponent som er direkte relatert til databasen. Det er én dataleverandør for hver type database. Dermed har databaser av typen Access , SQL Server , Oracle , MySQL hver sin spesifikke dataleverandør.

ADO-tilkoblingen kan bruke to typer dataleverandører, OLE DB og ODBC , med OLE DB som den opprinnelige leverandørtypen.

Når det ikke er noen spesifikk OLE DB-leverandør for en gitt database, og i stedet en ODBC-leverandør eksisterer, kan ADO-forbindelsen bruke den til å kommunisere med databasen, men ikke direkte, men gjennom en OLE-leverandør Spesiell DB som fungerer som mellomledd mellom ADO og ODBC.

Figuren under viser, til venstre, et diagram over de forskjellige komponentene som finnes mellom et program og databasen, og til høyre viser den banen som informasjonen går, ved å bruke OLE DB på den ene siden, og på andre den andre ODBC. Merk at når du bruker ODBC, er banen lengre fordi den må gå gjennom flere komponenter. Dette gjør kommunikasjonen litt tregere.

Med OLE DB Med ODBC +--------------+ +--------------+ +-------------- + | Program | | Program | | Program | +---------------+ | | | | | | | ADO | | ADO | | ADO | +---------------+ | | | | | | | OLE DB | | OLE DB | | OLEDB (OLE DB spesial for | +--------+ | | | | | kommunikasjon med hvilken som helst ODBC) | | ODBC | | | | | ODBC | +------+--------+ | | | | | | | Database | | Database | | Database | +--------------+ +--------------+ +-------------- +

Alt dette er åpent for ADO-brukeren, som generelt sett ikke trenger å vite eller vite om disse mekanismene.

ADO har en høy grad av abstraksjon, noe som betyr at ved å holde grensesnittet enkelt skjuler det de komplekse detaljene i databasebehandling.

Et program kan omgå ADO helt og få tilgang til databasen direkte på 3 forskjellige måter, gjennom OLE DB, ODBC eller gjennom ODBC ved å bruke et OLE DB-mellomlag. Ved å jobbe på denne måten har du fordelen av mer funksjonalitet som ikke inneholder ADO i bytte mot mer programmeringskompleksitet. Dette er nødvendig noen ganger, i visse typer programmer og for visse behov, men det er ikke vanlig.

+------------------------+ | Program | +---+-------+-------+----+ 1 2 3 +---+----+--+---+---+----+ | OLE DB | ODBC | OLE DB | | | +--------+ | | | ODBC | +--------+------+--------+ | Database | +------------------------+

Rekordsettet

Rekordsettet er, som navnet tilsier, et sett med poster. Generelt kommer dataene dine fra en database, selv om de også kan genereres uavhengig av den.

Et postsett kan inneholde null eller flere poster. Hvert postsett har en samling av felt, som er felles for alle poster. Vi kan se det som en matrise eller tabell, der radene er postene, og kolonnene er feltene.

Rekordsett med noen data fra ansattetabellen: +------------+---------+----------+ | Ansatt-ID | Navn | Etternavn | +------------+---------+----------+ | 1 | Louis | Perez | <-- Rekord 1 +------------+---------+----------+ | 5 | Josef | Åpne | <-- Rekord 2 +------------+---------+----------+ | 3 | Peter | løve | <-- Rekord 3 +------------+---------+----------+ | 7 | Mary | Marcano | <-- Rekord 4 +------------+---------+----------+ | | | | | +------- "Etternavn"-feltet | | | +------------------------ Felt "Navn" | +---------------------------- Felt "IdEmployee"

Et rekordsett kan ha ulike egenskaper som programmereren definerer når det passer for ham. Det kan for eksempel være skrivebeskyttet, eller lese-skrive.

Informasjonen som postsettet er lastet med kan komme fra én tabell eller flere tabeller i databasen.

Rekordsettet har navigasjonsmuligheter mellom sitt sett med poster. Kan:

I et postsett kan du se og redigere dataene for kun én post om gangen, du kan manipulere dataene i feltene til "gjeldende post" der den ligger.

I tillegg til å redigere poster, kan du også:

Redigering, innsetting og sletting av poster i postsettet vil gjenspeiles i databasen.

Kommandoen

Kommandoen ( kommandoen ) er ADO - komponenten som lar deg lage forespørsler eller gi ordre til databasen gjennom en SQL-setning .

Du kan spesifisere innsetting av nye poster i en tabell, samt sletting, oppdatering og innhenting av poster med visse betingelser.

I tillegg kan du opprette, endre og modifisere egenskapene til tabellene som utgjør databasen.

Eksempel på bruk av ADO fra Visual Basic

Dette eksemplet forutsetter et skjema med et DataGrid. " Neptuno.mdb " -databasen som følger med de spanske installasjonene av Microsoft Office og Visual Basic vil bli brukt .

Referanse til ADO

For å bruke ADO fra Visual Basic, er det første vi må gjøre å referere til ADO-komponenten. Dette gjøres gjennom menyen "Prosjekt\Referanser" og i vinduet som kommer opp velger vi ADO som i listen vil se slik ut

Microsoft ActiveX Data Objects X.XX Library

der X.XX representerer versjonen av ADO vi ønsker å bruke, som kan variere fra 1,5 til 2,8. DFA Merk: En datamaskin kan ha én eller flere versjoner installert samtidig, og vi må velge en av dem. De nyere versjonene har flere funksjoner og har færre feil enn de eldre.

Databaseforbindelsen

For å jobbe med en database må vi først etablere en tilkobling til den.

I skjemaet erklærer vi MyConnection-objektet, som vil tillate oss å koble til databasen

' erklærte MyConnection-objektet som en modulvariabel. ' Når instansiert vil det være tilkoblingen til databasen Dim MyConnection As ADODB.Connection

På dette tidspunktet er MyConnection-objektet bare erklært, men eksisterer ikke ennå fordi det ikke har blitt instansiert.

I Form_Load-hendelsen instansierer vi MyConnection-objektet og etablerer forbindelsen til databasen slik at vi kan kommunisere med den.

Private Sub Form_Load () ' Instantier tilkoblingen (nå eksisterer tilkoblingen) Sett MyConnection = New ADODB.Connection Med MyConnection ' Cursor in Client for å kunne bruke et DataGrid . CursorLocation = adUseClient ' Åpne tilkobling til databasen Northwind.mdb ved å bruke DSN . Åpne "DSN=Neptune" End With End Sub

Jeg har allerede instansiert tilkoblingen, og jeg har allerede koblet til databasen. Motorveien er åpen og fungerer.

Nå kan jeg gjøre ting med informasjonen som databasen inneholder. Jeg kan lese den, skrive den, slette den, endre den osv. Jeg kan også manipulere selve databasen. Jeg kan lage tabeller, endre dem, jeg kan opprette brukere osv.

Jeg leste informasjon fra databasen

Nå som vi har opprettet forbindelsen med databasen, ønsker vi å lese informasjon fra den og vise den på skjermen.

Vi spesifiserer informasjonen vi ønsker

Først må vi spesifisere til databasen hvilken informasjon vi ønsker. Dette gjøres ved hjelp av en SQL-setning .

For eksempel. Vi vil ha produkt-ID og navn for alle produkter hvis navn inneholder ordet "ost".

Dette er SQL-setningen vi trenger SELECT ProductId, ProductName FROM Products WHERE ProductName LIKE '%Cheese%'

SQL-setningen ovenfor betyr følgende:

Vi indikerer, til databasen, å returnere to felt, ProductId og ProductName VELG ProductId, ProductName Vi angir i hvilken tabell i databasen, er de tidligere angitte feltene De er i tabellen Produkter FRA produkter Vi angir en tilstand. Vi vil bare ha postene hvis navn inneholder ordet "OST" HVOR Produktnavn SOM "%Cheese%"

I Visual Basic lager vi en strengvariabel som vi vil kalle "SQL". Vi kan kalle det hva vi vil, vi kan kalle det "Avocado", Visual Basic ville håndtere det uten problemer, men det er bedre å gi det et navn som gir mening for oss og som tilsvarer bruken som skal gis til det.

Dim SQL som streng

Til den variabelen tildeler vi en tekst som vil være rekkefølgen vi skal sende til databasen. Denne teksten er SQL-setningen vi nettopp opprettet ovenfor.

SQL = "SELECT ProductId, ProductName" & vbCrLf & _ "FRA produkter" & vbCrLf & _ "HVOR Produktnavn SOM '%Cheese%'"

Vi har allerede spesifisert rekkefølgen vi skal sende til databasen slik at den returnerer postene med den informasjonen vi ønsker. Nå må vi lage et Recordset, som er ADO-objektet hvor informasjonen fra databasen vil bli mottatt.

Vi bruker et postsett for å motta informasjonen fra databasen

Vi erklærer Recordset-objektet som vil motta informasjonen fra databasen

Dim rs As ADODB.Recordset

Variabelen "rs" vil motta dataene som kommer fra databasen.

Nå bruker vi koblingen til å sende bestillingen til databasen slik at den returnerer informasjonen.

Sett rs = MyConnection.Execute ( SQL )

Når forrige setning utføres, utfører tilkoblingen "MyConnection", rekkefølgen i variabelen "SQL". Dette betyr at bestillingen sendes til databasen og databasen svarer med å returnere nødvendig informasjon. "MyConnection" leser den informasjonen fra databasen og konverterer den til et Recordset, som er tilordnet "rs"-objektet.

Nå har Recordset "rs" informasjonen som kom fra databasen, klar til bruk. Der har vi alle postene til "Produkter"-tabellen som oppfyller betingelsen om at "Produktnavn"-feltet inneholder ordet "ost". I postsettet er det bare feltene vi spesifiserte, "ProductId" og "ProductName".

Vi viser informasjonen i postsettet i et DataGrid

I Recordset "rs" har vi informasjonen. Denne informasjonen er brukbar på mange måter, siden med postsettet som det er kan vi gå gjennom den informasjonen og manipulere den, legge til poster, slette dem osv.

I dette eksemplet ønsker vi imidlertid å vise det i et DataGrid.

For å gjøre dette trenger vi bare å tildele Recordset til DataSource-egenskapen til DataGrid. Når dette er gjort, vil DataGrid vise innholdet i postsettet.

Sett DataGrid1.DataSource = rs

Full programkode

Merk: For at programmet skal fungere, trenger du bare å legge til en DataGrid-kontroll i skjemaet og en referanse til Microsoft ActiveX Data Objects X.XX Library.

Alternativ eksplisitt ' -------------------------------------------------- ---------- ' Erklærte MyConnection-objektet som en modulvariabel. ' Når instansiert vil det være tilkoblingen til databasen. ' -------------------------------------------------- ---------- Dim MyConnection Som ADODB.Connection ' -------------------------------------------------- ---------- ' Når skjemaet er lastet inn, gjør jeg jobben. ' (Her er det på det meste bare tilkoblingen til databasen som skal etableres, ' og de andre tingene bør gjøres andre steder, ' men dette er bare et enkelt eksempel) ' -------------------------------------------------- ---------- Private Sub Form_Load () ' ------------------------------------------ ---------------------------- ' Jeg instansierer tilkoblingen og kobler til databasen ' -------------------------------------------------- ---------- Sett MyConnection = New ADODB.Connection Med MyConnection ' Cursor in Client for å kunne bruke et DataGrid . CursorLocation = adUseClient ' Åpne tilkoblingen til databasen ved hjelp av en DSN . Åpne "DSN=Neptun" Avslutt med ' ------------------------------------------ ------------------ ' Spesifiser hvilken informasjon jeg vil ha fra databasen ' -------------------------------------------------- ---------- Dim SQL som streng SQL = "SELECT ProductId, ProductName" & vbCrLf & _ "Fra produkter" & vbCrLf & _ "HVOR Produktnavn SOM '%Cheese%'" ' -------------------------------------------------- ---------- ' Jeg laster postsettet med informasjonen fra databasen ' -------------------------------------------------- ---------- Dim rs As ADODB.Recordset Sett rs = MyConnection.Execute ( SQL ) ' ---------------------------------------- ------------------ ' Vis informasjonen i DataGrid ' -------------------------------------------------- ---------- Sett DataGrid1.DataSource = rs End Sub

Programbilde

Elementer fra produkttabellen hvis navn inneholder ordet "ost" vises.

Se også

Databaser

Spørringsspråk for relasjonsdatabaser

  • SQL (Structured Query Language)

Komponenter for databasebehandling

  • MDAC (Microsoft Data Access Components)
  • OLE DB (Object Linking and Embedding for Databases)
  • ODBC (Open Database Connectivity)
  • ADO.NET
  • DAO (Data Access Objects)
  • RDS (Remote Data Services)
  • Microsoft Jet Database Engine

Utviklingsplattformer og programmeringsspråk

Eksterne lenker