Datové objekty ActiveX
ActiveX Data Objects ( ADO ) je jedním z mechanismů, které počítačové programy používají ke komunikaci s databázemi , zadávají jim příkazy a získávají z nich výsledky.
Pomocí ADO může program číst, vkládat, upravovat nebo mazat informace obsažené v různých úložných oblastech v rámci databáze nazývané tabulky. Kromě toho lze se samotnou databází manipulovat a vytvářet nové oblasti pro ukládání informací (tabulky) a mimo jiné měnit nebo mazat stávající.
Byl vyvinut společností Microsoft a je používán v prostředí Windows programovacími jazyky , jako jsou mimo jiné Visual Basic , C++ , Delphi , a také na webu pomocí Active Server Pages (ASP) a jazyka VBScript .
Evoluce
ADO nahradil DAO (Data Access Object) a RDO (Remote Data Object), což byly předchozí systémy používané pro přístup k databázím, respektive ke vzdáleným databázím. Má většinu funkcí obou modelů a přesto je jednodušší na používání a pochopení, a proto je jednodušší a méně těžkopádný na programování .
Nejnovější verze ADO vytvořená společností Microsoft se nazývá ADO.NET a používá se v programovacích prostředích platformy .NET společnosti Microsoft ke zpracování databází ve Windows i na webu pomocí ASP.NET , což je nová verze ASP pro platformu .NET.
Ve svobodné softwarové programovací platformě s názvem Mono existuje také knihovna podobná ADO.NET, což znamená, že nyní lze technologii ADO.NET používat v jiných operačních systémech než Windows , jako je Linux , Mac OS X , BSD a Solaris . .
ADO.NET je mnohem výkonnější než ADO, ale je také velmi odlišný, takže je nutné předělat programy vyrobené s ADO tak, aby v něm fungovaly.
V roce 2006 je naplánováno vydání nové verze prostředí .NET, která bude mít vylepšenou verzi ADO.NET nazvanou ADO.NET 2 .
+-----+------+ | DAO | RDO | +-----+------+ | ADO | +-------------+ | ADO.NET | +-------------+ | ADO.NET2 | +-------------+ | ADO.NET 3.5 | +-------------+
Operace
ADO je prostředníkem mezi programem a databází. Program neprohlíží databázi přímo, ale veškerou práci provádí přes ADO. Pomocí ADO program komunikuje s databází, dotazuje se, upravuje, vkládá, maže záznamy, přidává tabulky atd. ADO zase komunikuje s databází prostřednictvím „poskytovatele dat“.
Program používá ADO k zadání požadavku do databáze:
"Dejte mi jméno a příjmení všech zaměstnanců, kteří žijí ve Venezuele"
Program ---> ADO ---> Poskytovatel dat ---> Databáze
V opačném směru odpovídá databáze, komunikuje s poskytovatelem dat, ten s ADO a nakonec se informace dostane do programu.
Databáze odpovídá
Program <--- ADO <--- Poskytovatel dat <--- Databáze
+--------+------------+ | Jméno | Příjmení | +--------+------------+ | Josef | Pereira | | John | Perez | | Marie | Hernandez | +--------+------------+
Jakmile má program informace z databáze, může s nimi dělat, co uzná za vhodné, například je zobrazovat na webové stránce.
Požadovaní uživatelé jsou následující:
| název | Příjmení |
|---|---|
| Josefe | Pereira |
| Juan | Perez |
| Maria | Hernandez |
komponenty ADO
Hlavní součásti ADO
- Připojení (Umožňuje navázat spojení s databází)
- Recordset (spravuje sadu databázových záznamů)
- Příkaz (Umožňuje odeslat příkazy SQL , které má databáze provést)
Další komponenty ADO
- Záznam (Umožňuje zpracovávat záznam, obvykle, ale ne výhradně, z jiného zdroje než z databáze. Jedním z jeho použití je reprezentace dat, která nejsou strukturována ve formě tabulek, například mají stromovou strukturu .
- Pole (Umožňuje manipulovat s polem patřícím k záznamu nebo sadě záznamů)
- Parametr (Umožňuje nastavit parametr pro dotaz SQL. Používá se s příkazem)
- Stream (Umožňuje spravovat datové toky (streamy) z textových souborů, webových stránek atd.)
- Chyba (označuje charakteristiky chyb, které by mohly nastat při provádění metod objektů ADO)
- Vlastnost (obsahuje informace týkající se konkrétního objektu)
Objekty připojení, sady záznamů a příkazů
3 hlavní součásti ADO jsou připojení, sada záznamů a příkaz (připojení, sada záznamů a příkaz).
+-------------+
+----| Připojení |----+
| +------------+ |
| |
+-----+-----+ +-----+-----+
| Sada záznamů |-----------| Příkaz |
+-----------+ +-----------+
Připojení
Spojení je jako dálnice, která umožňuje tok dat mezi programem a databází. Mohou jím procházet příkazy, které se z programu používají k vyžádání informací z databáze nebo k provedení operace v ní, jako je mazání záznamů, přidávání záznamů, úprava tabulek atd. Po této dálnici mohou mimo jiné data přicházet a odcházet do a z databáze.
Sada záznamů i příkaz používají připojení ke komunikaci s databází.
Spojení komunikuje s databází přes prostředníka zvaného „poskytovatel dat“.
+----------+ +-----------+ +---------+ | Připojení | ------> | Poskytovatel | ------> | Základ | | | <------ | dat | <------ | údaje | +----------+ +-----------+ +---------+
Poskytovatel dat
Poskytovatel dat je komponenta, která přímo souvisí s databází. Pro každý typ databáze existuje jeden poskytovatel dat. Databáze typu Access , SQL Server , Oracle , MySQL mají tedy každá konkrétního poskytovatele dat.
Připojení ADO může používat dva typy poskytovatelů dat, OLE DB a ODBC , přičemž OLE DB je nativní typ poskytovatele.
Pokud pro danou databázi neexistuje žádný konkrétní poskytovatel OLE DB a místo toho existuje poskytovatel ODBC, připojení ADO jej může použít ke komunikaci s databází, nikoli však přímo, ale prostřednictvím poskytovatele OLE. Speciální databáze, která slouží jako prostředník mezi ADO a ODBC.
Obrázek níže ukazuje vlevo diagram různých komponent, které existují mezi programem a databází, a vpravo ukazuje cestu, kterou informace putují, na jedné straně pomocí OLE DB a na straně druhé. jiné, jiné ODBC. Všimněte si, že při použití ODBC je cesta delší, protože musí projít více komponentami. Tím je komunikace trochu pomalejší.
S OLE DB S ODBC +---------------+ +---------------+ +---------------- + | Program | | Program | | Program | +----------------+ | | | | | | | ADO | | ADO | | ADO | +----------------+ | | | | | | | OLE DB | | OLE DB | | OLEDB (speciál OLE DB pro | +--------+ | | | | | komunikace s jakýmkoli ODBC) | | ODBC | | | | | ODBC | +------+--------+ | | | | | | | Databáze | | Databáze | | Databáze | +---------------+ +---------------+ +---------------- +
To vše je transparentní pro uživatele ADO, který obecně nemusí vědět nebo vědět o těchto mechanismech.
ADO má vysoký stupeň abstrakce, což znamená, že zachováním jednoduchého rozhraní skrývá složité detaily správy databáze.
Program může zcela obejít ADO a přistupovat k databázi přímo 3 různými způsoby, prostřednictvím OLE DB, ODBC nebo prostřednictvím ODBC pomocí střední vrstvy OLE DB. Tím, že budete pracovat tímto způsobem, získáte výhodu větší funkčnosti, která neobsahuje ADO výměnou za větší složitost programování. To je někdy nutné, v určitých typech programů a pro určité potřeby, ale není to běžné.
+------------------------+
| Program |
+---+-------+-------+----+
1 2 3
+---+----+--+---+---+----+
| OLE DB | ODBC | OLE DB |
| | +--------+
| | | ODBC |
+--------+------+--------+
| Databáze |
+------------------------+
Sada záznamů
Recordset je, jak jeho název napovídá, soubor záznamů. Vaše data obecně pocházejí z databáze, i když mohou být generována i nezávisle na ní.
Sada záznamů může obsahovat nula nebo více záznamů. Každá sada záznamů má kolekci polí, která je společná pro všechny záznamy. Můžeme to vidět jako matici nebo tabulku, kde řádky jsou záznamy a sloupce jsou pole.
Sada záznamů s některými daty z tabulky zaměstnanců:
+------------+---------+----------+
| ID zaměstnance | Jméno | Příjmení |
+------------+---------+----------+
| 1 | Louis | Perez | <-- Záznam 1
+------------+---------+----------+
| 5 | Josef | Otevřít | <-- Záznam 2
+------------+---------+----------+
| 3 | Petr | lev | <-- Záznam 3
+------------+---------+----------+
| 7 | Marie | Marcano | <-- Záznam 4
+------------+---------+----------+
| | |
| | +------- Pole "Příjmení".
| |
| +------------------ Pole "Jméno"
|
+---------------------------- Pole "IdZaměstnanec"
Sada záznamů může mít různé vlastnosti, které si programátor podle svého uvážení definuje. Může být pouze pro čtení nebo například pro čtení a zápis.
Informace, se kterými je načtena sada záznamů, mohou pocházet z jedné tabulky nebo několika tabulek v databázi.
Sada záznamů má možnosti navigace mezi její sadou záznamů. Umět:
- Přejít na další záznam
- přejít na předchozí
- přesunout na první
- přesunout na poslední
- a další
V sadě záznamů můžete prohlížet a upravovat data pouze pro jeden záznam najednou, můžete manipulovat s daty v polích "aktuálního záznamu", kde se nachází.
Kromě editace záznamů můžete také:
- Vložte nové záznamy
- smazat záznamy
Úpravy, vkládání a mazání záznamů v sadě záznamů se projeví v databázi.
Příkaz
Příkaz ( příkaz ) je komponenta ADO , která vám umožňuje zadávat požadavky nebo dávat příkazy databázi prostřednictvím příkazu SQL .
Můžete určit vkládání nových záznamů do tabulky, stejně jako mazání, aktualizaci a získávání záznamů za určitých podmínek.
Kromě toho můžete vytvářet, měnit a upravovat charakteristiky tabulek, které tvoří databázi.
Příklad použití ADO z jazyka Visual Basic
Tento příklad předpokládá formulář s DataGrid. Bude použita databáze " Neptuno.mdb " dodávaná se španělskými instalacemi Microsoft Office a Visual Basic .
Odkaz na ADO
Aby bylo možné použít ADO z jazyka Visual Basic, první věc, kterou musíme udělat, je odkaz na komponentu ADO. To se provádí přes nabídku "Projekt\Reference" a v okně, které se objeví, vybereme ADO, které v seznamu bude vypadat jako
Knihovna Microsoft ActiveX Data Objects X.XX
kde X.XX představuje verzi ADO, kterou chceme použít, která může být v rozsahu od 1,5 do 2,8. Poznámka DFA: Na počítači může být nainstalována jedna nebo více verzí současně a my musíme vybrat jednu z nich. Novější verze mají více funkcí a mají méně chyb než ty starší.
Připojení k databázi
Abychom mohli s databází pracovat, musíme k ní nejprve navázat spojení.
Ve Formuláři deklarujeme objekt MyConnection, který nám umožní připojení k databázi
' deklaroval objekt MyConnection jako proměnnou modulu. ' Po vytvoření instance se bude jednat o připojení k databázi Dim MyConnection As ADODB.Connection
V tomto okamžiku je objekt MyConnection pouze deklarován, ale zatím neexistuje, protože nebyl vytvořen.
V události Form_Load vytvoříme instanci objektu MyConnection a navážeme spojení s databází, abychom s ním mohli komunikovat.
Private Sub Form_Load () ' Instanciujte připojení (nyní připojení existuje) Set MyConnection = New ADODB.Connection
S kurzorem MyConnection v klientovi budete moci používat DataGrid . CursorLocation = adUseClient ' Otevřete připojení k databázi Northwind.mdb pomocí vašeho DSN . Otevřete "DSN=Neptune" End With End Sub
Připojení již mám vytvořené a již jsem se připojil k databázi. Dálnice je otevřená a funkční.
Nyní mohu dělat věci s informacemi, které databáze obsahuje. Můžu to číst, psát, mazat, upravovat atd. Mohu také manipulovat se samotnou databází. Mohu vytvářet tabulky, upravovat je, mohu vytvářet uživatele atd.
Přečetl jsem informace z databáze
Nyní, když máme navázáno spojení s databází, chceme z ní číst informace a zobrazovat je na obrazovce.
Specifikujeme informace, které chceme
Nejprve musíme do databáze specifikovat, jaké informace chceme. To se provádí pomocí příkazu SQL .
Například. Chceme ID a název produktu pro všechny produkty, jejichž název obsahuje slovo „sýr“.
Toto je SQL příkaz, který potřebujeme SELECT ProductId, ProductName FROM Products WHERE ProductName LIKE '%Cheese%'
Výše uvedený příkaz SQL znamená následující:
Naznačíme do databáze vrátit dvě pole, ProductId a ProductName SELECT ProductId, ProductName
Uvádíme, ve které tabulce databáze, jsou výše uvedená pole Jsou v tabulce Produkty Z Produkty
Označujeme podmínku. Chceme pouze záznamy, jejichž název obsahuje slovo "Sýr" , KDE Název produktu LIKE ' %Cheese%'
Ve Visual Basicu vytvoříme řetězcovou proměnnou, kterou budeme nazývat „SQL“. Mohli bychom tomu říkat, jak chceme, mohli bychom tomu říkat „Avokádo“, Visual Basic by to bez problémů zvládl, ale je lepší mu dát název, který nám dává smysl a který odpovídá použití, které se chystá k tomu.
Ztlumit SQL jako řetězec
Té proměnné přiřadíme text, který bude objednávkou, kterou budeme odesílat do databáze. Tento text je příkaz SQL, který jsme právě vytvořili výše.
SQL = "SELECT ProductId, ProductName" & vbCrLf & _ "FROM Products" & vbCrLf & _ "WHERE ProductName LIKE '%Cheese%'"
Již jsme zadali objednávku, kterou se chystáme odeslat do databáze, aby nám vrátila záznamy s požadovanými informacemi. Nyní musíme vytvořit Recordset, což je objekt ADO, kam budou přijímány informace z databáze.
K přijímání informací z databáze používáme sadu záznamů
Deklarujeme objekt Recordset, který bude přijímat informace z databáze
Dim rs Jako ADODB.Recordset
Proměnná "rs" obdrží data pocházející z databáze.
Nyní pomocí připojení odešleme objednávku do databáze, aby vrátila informace.
Set rs = MyConnection.Execute ( SQL )
Po provedení předchozí věty provede spojení "MyConnection" příkaz obsažený v proměnné "SQL". To znamená, že objednávka je odeslána do databáze a databáze odpovídá vrácením požadovaných informací. "MyConnection" načte tyto informace z databáze a převede je na sadu záznamů, která je přiřazena k objektu "rs".
Nyní má sada záznamů "rs" informace, které pocházejí z databáze, připravené k použití. Tam máme všechny záznamy tabulky „Produkty“, které splňují podmínku, že pole „Název produktu“ obsahuje slovo „sýr“. V sadě záznamů jsou pouze pole, která jsme zadali, "ProductId" a "ProductName".
Zobrazujeme informace obsažené v sadě záznamů v DataGrid
V Recordset "rs" máme informace. Tyto informace jsou použitelné mnoha způsoby, protože se sadou záznamů tak, jak je, můžeme tyto informace procházet a manipulovat s nimi, přidávat záznamy, mazat je atd.
V tomto příkladu jej však chceme zobrazit v DataGridu.
K tomu stačí přiřadit Recordset vlastnosti DataSource DataGrid. Jakmile to provedete, DataGrid zobrazí obsah sady záznamů.
Nastavte DataGrid1.DataSource = rs
Celý programový kód
Poznámka: Aby program fungoval, stačí do formuláře přidat ovládací prvek DataGrid a odkaz na knihovnu Microsoft ActiveX Data Objects X.XX Library.
Možnost Explicitní
“ ------------------------------------------------- --------- ' Deklaroval objekt MyConnection jako proměnnou modulu. ' Po vytvoření instance se bude jednat o připojení k databázi. “ ------------------------------------------------- --------- Dim MyConnection jako ADODB.Connection
“ ------------------------------------------------- --------- Když je formulář načten, dělám práci. “ (Zde by mělo být navázáno maximálně pouze připojení k databázi, “ a ostatní věci by se měly dělat jinde, “ ale to je jen jednoduchý příklad) “ ------------------------------------------------- --------- Private Sub Form_Load () ' ----------------------------------- ------------------------ ' Vytvořím instanci připojení a připojím se k databázi “ ------------------------------------------------- --------- Nastavit MyConnection = Nové ADODB.Connection
S kurzorem MyConnection v klientovi budete moci používat DataGrid . CursorLocation = adUseClient ' Otevření připojení k databázi pomocí DSN . Otevřít "DSN=Neptun" End With ' ----------------------------------------- ----------------- ' Určete, jaké informace z databáze chci “ ------------------------------------------------- --------- Dim SQL As String
SQL = "SELECT ProductId, ProductName" & vbCrLf & _ "Z produktů" & vbCrLf & _ "WHERE ProductName LIKE '%Cheese%'" “ ------------------------------------------------- --------- Načtu sadu záznamů s informacemi z databáze “ ------------------------------------------------- --------- Dim rs Jako ADODB.Recordset
Set rs = MyConnection.Execute ( SQL ) ' ---------------------------------------- ------------------- ' Zobrazit informace v DataGrid “ ------------------------------------------------- --------- Nastavit DataGrid1.DataSource = rs End Sub
Obrázek programu
Zobrazí se položky z Tabulky produktů, jejichž názvy obsahují slovo „sýr“.
Viz také
Databáze
- Databáze
- relační databáze
- RDBMS (systém správy relační databáze)
Dotazovací jazyk pro relační databáze
- SQL (Structured Query Language)
Komponenty pro správu databáze
- DAO (Data Access Objects)
- RDS (vzdálené datové služby)
- Databázový stroj Microsoft Jet
Vývojové platformy a programovací jazyky
